如何识别maven-bundle-plugin

时间:2016-12-12 11:10:03

标签: java maven osgi maven-bundle-plugin

我使用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,但这不是必需的,我个人会发现它更清晰,以排除未知的依赖。

1 个答案:

答案 0 :(得分:0)

  

如何找出哪个依赖项导出此包?

如果您安装了* nix控制台和bnd命令行工具,可以尝试:

mvn dependency:build-classpath | grep jar | tr ':' ' ' | xargs bnd find -e 'javax.annotation'

可能有更好的方法来做到这一点,但这是一个盯着