java - 使用 Maven Bundle 插件进行 osgi 开发并设置依赖关系

标签 java maven osgi bundle

我正在使用 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/

相关文章:

java - 使用 AST 时 eclipse 中出现 NoClassDefFoundError

java - Python 和 Java 之间的 RSA 加密填充问题

java - Maven - 使用 Surefire 插件时无法在 Eclipse 中调试

java - Spring 无法定位 OSGi 命名空间处理程序

java - Android:巨型模式与 Multidex

java - 安卓 : Problems with accents and ñ

maven - 使用maven jetty插件时如何过滤资源?

maven - SonarQube - 无法加载组件类

java - 在 Apache Felix 中运行的任务调度程序?

java - 在OSGI中导入包