摆脱不了Split包,多个jar提供同一个包

Posted

技术标签:

【中文标题】摆脱不了Split包,多个jar提供同一个包【英文标题】:Can't get rid of Split package, multiple jars provide the same package 【发布时间】:2014-03-13 18:53:33 【问题描述】:

我有一个主项目(projectA),它有一个库依赖(projectB),它们都有package.subpackage。我想在主项目中内联库。主要项目配置非常简单(除了'compile'范围列出的依赖关系:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.4.0</version>
    <extensions>true</extensions>
    <configuration>
        <instructions combine.inherited="append">
            ...
            <Export-Package>package.*;version=$packet.version;-split-package:=merge-first</Export-Package>
            <Bundle-SymbolicName>$project.artifactId;singleton=true</Bundle-SymbolicName>
        </instructions>
    </configuration>
</plugin>       

但它会产生以下警告

--- maven-bundle-plugin:2.4.0:bundle (default-bundle) @ projectA ---
Bundle project:projectA:bundle:version : Split package, multiple jars provide the same package:project/subproject
Use Import/Export Package directive -split-package:=(merge-first|merge-last|error|first) to get rid of this warning
Package found in   [Jar:., Jar:subproject]
Class path         [Jar:., Jar:subproject]

我有拆分包指令,但警告仍然存在。

我希望它是一种简单地内联显式列出的工件中的所有内容的方法,仅此而已(即使声明了更多依赖项),没有任何传递依赖项。最好不要有任何关于拆分包的警告。

【问题讨论】:

【参考方案1】:

我认为你需要maven shade plug-in

【讨论】:

为什么添加另一个插件会有帮助? 因为它是专门为解决这个问题而设计的,一般在maven构建系统中使用插件来处理依赖和配置。 如果包在两个独立的第三方 JAR 中,它不会解决这个问题。在着色器运行之前编译将快速失败。

以上是关于摆脱不了Split包,多个jar提供同一个包的主要内容,如果未能解决你的问题,请参考以下文章

maven工程为啥打成jar包能用在war包上用不了

合并多个jar包,并通过私服依赖

Myeclipse小技巧之选中多个jar包

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包

java 怎么把多个jar打包成一个jar来使用??

eclipse导入jar包怎么使用