java - bndtools 是 OSGI 捆绑包的未来捆绑工具吗?
问题描述
我看到有一些社区osgi.enroute
,equinox
等等都在鼓励 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 插件包而不是使用这些复杂的工具吗?
解决方案
最新的航路示例使用 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 规范本身有很好的文档,但最简单的方法是从示例开始。
推荐阅读
- sql - 从 SQL 中的 mm/yy 中减去一个月
- java - AWS - 使用 @connections websocket 回调 url 从后端发送响应(单向) - API Gateway websocket 协议
- xslt - 无法使用 unparsed-text() 读取 xslt 中的 .properties 文件
- mysql - Loopback Mysql 连接器自定义查询结果到字段值
- python - 区域中的定点并得到一个错误 ValueError:一个系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- python-3.x - 如何在python中制作网络监听器?
- amazon-web-services - AWS API GATEWAY - 空响应正文
- html - 标签没有在html中创建新行
- javascript - 延迟后播放声音数组
- android-fragments - 将父片段设为空,如何解决?