摆脱不了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提供同一个包的主要内容,如果未能解决你的问题,请参考以下文章