使用 Maven 构建 OSGI 应用程序

Build OSGI application with Maven

我正在尝试使用 Maven 构建独立的 OSGI 应用程序。有几个子模块包含 "bundles" 和一个 "distribution" 模块,它生成一个目录 (zip),其中包含我的包、框架的包和所需的配置文件。后者将所有子模块和 OSGI 实现声明为依赖项(Felix 和 Equinox 的不同配置文件)并使用程序集插件将它们放在一起。

我只能构建并 运行 成功地构建 Felix 版本,但它不可靠,并且由于未解决的导入或包的不兼容版本而在依赖版本中进行任何修改后中断。

这是我的问题

  1. Maven是否适合OSGI开发?
  2. 如何确定哪些版本的bundle 对应于某个版本的OSGI 规范并且相互兼容?

For example, if my bundles depends on osgi.core:5.0 what jars are required at runtime org.apache.felix.framework: 5.6.1 or 4.6.0 org.apache.felix.configadmin: 1.8.12 or 1.6.0

  1. Equinox 的正确工件名称是什么?

There are org.eclipse.equinox:cm:3.6... and org.eclipse.equinox:org.eclipse.equinox.cm:3.6.. on the internet.

  1. Pax 项目的状态是什么?文档不多,很多链接都坏了。

Maven 非常适合在 maven-bundle-plugin 或 bnd-maven-plugin 的帮助下构建包。

对于程序集,我建议使用 apache karaf 功能和包作为 karaf custom distro or use an OBR index and package using bndtools

原因是 OSGi 需要查看清单的属性才能创建良好的部署。纯 maven 依赖项对此效果不佳。