【问题标题】:Can I declare a dependency like private package using Apache Felix Maven Bundle Plugin?我可以使用 Apache Felix Maven Bundle Plugin 声明像私有包这样的依赖项吗?
【发布时间】:2017-06-28 09:35:52
【问题描述】:

我可以使用 Apache Felix Maven Bundle Plugin 声明像私有包这样的依赖项吗?

由于传递依赖的版本不同,我想避免 NoClassDefFoundException。

Apache Felix Maven Bundle Plugin documentation 之后,我可以看到<Private-Package>org.apache.felix.log.impl</Private-Package>,但在该示例中,声明为私有的依赖项是一个自己的类。

我不知道该语句是否可以与依赖项一起使用。

【问题讨论】:

    标签: dependencies osgi maven-plugin apache-felix osgi-bundle


    【解决方案1】:

    您可以将 Private-Package 用于位于依赖项中的包。结果将是包的内容嵌入到您的包中。

    请小心,因为这将导致此包中所有类的所有导入的 Import-Package 语句。因此实际上会使您的情况变得更糟。

    【讨论】:

    • 感谢您的回复。我是这么想的,但我想知道 Eclipse 如何解决这个问题。也许 Eclipse 使用类似BND 的东西?在这种情况下,BND 是否与 OSGi 捆绑包兼容?
    • Eclipse 是什么意思? Eclipse RCP 还是 IDE 的插件透视图?它目前不使用 bnd。
    • Eclipse 解决了这个问题,如果你查看 pom.xml 文件中的 Dependency 部分,你可以看到 Eclipse 将传递依赖替换为其他依赖提供的最新依赖。你明白吗?
    • 现在我明白你的意思了。这是maven或eclipse中m2e插件的逻辑。在 OSGi 中,这些依赖关系是不相关的。您可以使用带有包和版本范围的 Import-Package 来表达您的依赖关系。这就是在运行时决定哪个包可以提供这样的包。 OSGi 还将使用适合导入版本范围的最高版本号。
    • 我会这样做,我希望它有效。以后我会告诉你的。谢谢你的帮助! ;)
    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 2013-05-28
    • 2017-01-29
    • 2012-04-20
    • 2017-06-15
    • 2020-06-14
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多