首页 > 解决方案 > bndtools 是 OSGI 捆绑包的未来捆绑工具吗?

问题描述

我看到有一些社区osgi.enrouteequinox等等都在鼓励 bndtools 用于 osgi bundle。但是,有很多特殊的密钥我从未见过,也无法在他们的官方网站上找到。例如

Require-Capability:\
    osgi.service;filter:="blahblahblah";effective:=active
Provide-Capability: osgi.service;objectClass=net....

有时会做类似的事情

META-Persistence:
Webcontext-path: 

好的,这个文档来自哪里?谁知道这样放它会自动查找吗?这意味着我把JDBC-Driver它会查找?

他们是可以参考所有这些东西的任何 bndtool 备忘单或文档吗?

据我所知,maven felix 插件帮助我们很好地捆绑了私有导出和导入。我想迁移到 bndtools 做什么?

而且我看到 apache karaf(流行的 OSGI 运行时)仍在使用更清晰易懂的 felix maven 插件。

这是 OSGI 直到现在仍然不如其他 JAVA 框架流行的原因吗?我还能坚持使用 maven Felix 插件包而不是使用这些复杂的工具吗?

标签: javaosgiosgi-bundleapache-felixbndtools

解决方案


最新的航路示例使用 Maven 构建。所以它们与 apache karaf 构建并没有太大区别。要使用 maven 创建捆绑包,您有两种选择。maven-bundle-plugin(来自 felix)和 bnd 社区的 bnd-maven-plugin。

两者都在引擎盖下使用 bnd,因此它们只有很小的差异。bnd-maven-plugin 默认使用 bnd.bnd 进行配置。maven-bundle-plugin 也可以使用这种配置风格。我看到许多项目使用 bnd-maven-plugin 的趋势​​,因为它与 bnd 版本更新,但你可以同时使用。

真正的区别在于构建部署工件。在 bndtools 中,您从 bndrun 文件中构建一个 jar,而在 karaf 中,您通常创建一个功能文件。这是你真正必须决定走哪条路的地方。如果您在应用程序中使用自包含 jar,那么 bndtools 是一个不错的选择。如果您计划部署到 karaf,那么 karaf 功能是最佳选择。

顺便提一句。在这两种情况下,Eclipse 的 bndtools 插件都提供了一些很好的支持。特别是查看 jars 清单和对 bnd.bnd 文件的编辑支持得到了很好的支持。

关于 bnd.bnd 文件中所需的配置。如果您使用 felix maven-bundle-plugin,则需要以相同的方式进行这些配置。

好消息是,如果您使用最新的规范/示例,那么您很少需要接触 bnd.bnd 或 maven 中的插件配置。几乎所有需要的配置都有注释。OSGi 规范本身有很好的文档,但最简单的方法是从示例开始。


推荐阅读