美文网首页Java奇巧淫技
maven-shade-plugin实现依赖隐藏

maven-shade-plugin实现依赖隐藏

作者: Chermack | 来源:发表于2020-10-20 22:30 被阅读0次

    在开发一个通用组件时,难免需要借助一些第三方工具帮我们快速实现功能。而我们的通用组件的用户,很可能需要与我们使用相同的工具,如果依赖的组件版本不一致,很有可能造成依赖冲突。除了让使用方排除冲突的公共依赖(很有可能排除任意一方都会造成版本不兼容),还可以使用maven-shade-plugin对通用组件的依赖进行隐藏,这样就可以依赖于各自的版本而不发生冲突。

       <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.2.4</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <!--              <minimizeJar>true</minimizeJar>-->
                                <shadedArtifactAttached>false</shadedArtifactAttached>
                                <createDependencyReducedPom>true</createDependencyReducedPom>
                                <createSourcesJar>false</createSourcesJar>
                                <shadeSourcesContent>true</shadeSourcesContent>
                                <relocations>
                                    <relocation>
                                        <pattern>org.slf4j</pattern>
                                        <shadedPattern>org.myself.toolkit.slf4j</shadedPattern>
                                    </relocation>
                                </relocations>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    例如隐藏slf4j的方法如上,项目打包时会将org.slf4j一同打包,并将包名字段中的org.slf4j替换为org.myself.toolkit.slf4j。当其他项目引入该项目时,即使其他项目也依赖于slf4j,但这两个版本都能独立工作,唯一的缺点会使jar包体积变大。如果要隐藏多个依赖可以添加多个<relocation></relocation>。

    相关文章

      网友评论

        本文标题:maven-shade-plugin实现依赖隐藏

        本文链接:https://www.haomeiwen.com/subject/ouujmktx.html