我看到有一些社区 osgi.enroute
, equinox
etc正在鼓励使用bndtools来实现osgi包。不过,有很多特别的钥匙,我从来没有见过,在他们的官方网站上找不到。例如。
Require-Capability:\
osgi.service;filter:="blahblahblah";effective:=active
Provide-Capability: osgi.service;objectClass=net....
有时会有类似的事情发生
META-Persistence:
Webcontext-path:
好的,这些文件是从哪里来的?谁知道这样放会不会自动查出来?也就是说我把 JDBC-Driver
那它会查吗?
他们是否有任何bndtool备忘单或文件,可以参考所有这些东西。
据我所知,maven felix插件帮助我们很好地捆绑了私人进出口。为什么要迁移到bndtools?
我看到ApacheKaraf(流行的osgi运行时)仍然在使用FelixMaven插件,它更清晰易懂。
这就是为什么osgi直到现在仍然不如其他java框架流行的原因吗?我还能坚持maven felix插件包而不是使用这些复杂的工具吗?
1条答案
按热度按时间4c8rllxm1#
最新的途中示例使用maven构建。因此,它们与apachekaraf构建没有太大区别。对于使用maven创建bundle,您有两个选择。maven bundle插件(来自felix)和bnd社区的bnd maven插件。
两者都在引擎盖下使用bnd,所以它们只有很小的区别。bnd maven插件默认使用bnd.bnd进行配置。maven bundle插件也可以使用这种配置风格。我看到了很多项目使用bnd maven插件的趋势,因为它更符合bnd版本的最新版本,但是您可以同时使用这两个版本。
真正的区别在于构建部署工件。在bndtools中,您用bndrun文件构建jar,而在karaf中,您通常创建一个功能文件。这是你真正需要决定的方向。如果您的应用程序使用自包含的jar,那么bndtools是一个很好的选择。如果您计划部署到karaf,那么karaf特性是最佳选择。
顺便说一句,在这两种情况下,用于eclipse的bndtools插件都提供了一些很好的支持。特别是查看jar清单和编辑bnd.bnd文件的支持是很好的支持。
关于bnd.bnd文件中需要的配置。如果您使用felixmaven bundle插件,同样需要这些配置。
好消息是,如果您使用最新的规范/示例,那么您很少需要接触maven中的bnd.bnd或插件配置。几乎所有需要的配置都有注解。osgi规范本身有很好的文档,但最简单的方法是从示例开始。