我使用maven-bundle-plugin从Maven模块创建OSGI包。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<configuration>
<instructions>
<Import-Package>
*
</Import-Package>
<Export-Package>
my.bundle.packages
</Export-Package>
</instructions>
</configuration>
</plugin>
不幸的是,似乎有一个依赖项暴露了 javax.annotation 。因此,生成的Manifest包含Import-Package: javax.annotation;version="[3.2,4)"
如何找出哪个依赖项导出此包?使用mvn dependency:list
我已经能够排除一些依赖项(com.google.code.findbugs:annotations和com.google.code.findbugs:jsr305),但版本范围仍然存在。
我一直在查看直接依赖项的Manifest文件,但是没有找到任何其他jar导出javax.annotation。
注意:我可以为javax.annotation添加依赖项:com.springsource.javax.annotation,Manifest会正确导入javax.annotation版本1.0.0,但这不是必需的,我个人会发现它更清晰,以排除未知的依赖。
答案 0 :(得分:0)
如何找出哪个依赖项导出此包?
如果您安装了* nix控制台和bnd
命令行工具,可以尝试:
mvn dependency:build-classpath | grep jar | tr ':' ' ' | xargs bnd find -e 'javax.annotation'
可能有更好的方法来做到这一点,但这是一个盯着