我正在使用 maven (maven-bundle-plugin) 和 apache karaf 迈出 osgi bundle 开发的第一步。 我的问题是:我如何导入另一个包的包?
如果我有两个 bundle A 和 B。 假设 Bundle A 导出一个包“package.from.bundle.A”。 我可以在 Bundle A 项目的 pom.xml 中声明这一点:
...
<instructions>
...
<Export-Package>
package.from.bundle.A*;version=${project.version}
</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
...
但是我如何声明我想在 Bundle B 中使用该包? 如果我只是将包名写在项目 B 的 pom 文件的 import-package 标记之间,这是行不通的...
...
<instructions>
...
<Export-Package>
</Export-Package>
<Import-Package>
package.from.bundle.A
</Import-Package>
</instructions>
...
maven如何知道这个包与哪个bundle项目相关?如何使用 Maven 使用 bundle 之间的依赖关系?
谢谢
最佳答案
maven bundle 插件在幕后使用 bnd,它使用字节码分析从编译的代码中追溯地计算出导入。包导出更多的是一个设计问题,这就是为什么需要明确指定它们。
您可以查看目标文件夹中生成的 list ,我建议您这样做,以确保您了解代表您执行的操作。
关于java - 使用 Maven Bundle 插件进行 osgi 开发并设置依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11479142/