与Maven,OSGi和Bndtools合作

chr*_*gel 10 java osgi maven bndtools

今天我被问到在我们当前的OSGi应用程序中使用Maven是否是个好主意.我们使用了Bndtools,因为它使开发变得尽可能简单.即使在应用程序运行期间,Bndtools也使用OBR来维护其他捆绑包和依赖项解析.

由于Maven广泛传播并且如此受欢迎,大多数人都尝试在OSGi环境中使用它.对我来说,这是两种不同的方法.OSGi有自己的依赖声明,MANIFEST.MF和Maven是一个pom,你可以在其中声明它们.因此,如果您同时使用它们,则会两次声明依赖项.当然,您可以使用Apache OSGi Maven插件来避免它,Maven负责创建MANIFEST.MF.但Maven存储库并不真正关心捆绑包.因此,您可能会引用非捆绑jar.

当然,使用Maven有一些优点,但将它与OSGi或特别是Bndtools结合起来真的是一件好事吗?

有人可以提供优点或缺点!有使用两者的实际经验吗?

Fra*_*Lee 8

我想如果你做的几乎所有事情都以Maven为中心,那么Apache Felix Maven插件(顺便说一下,也是基于BND)是可行的方法.

否则,如果你想使用Maven但不太重要,那么Eclipse Tycho就很有意义.Tycho是一套Maven插件.

使用Tycho,您可以提供从Eclipse到Maven的目标平台,然后它可以通过查看您的MANIFEST和目标平台来解析所有捆绑包.对于Tycho项目,pom.xml文件非常简单,因为它们不包含您的依赖项.

Tycho显然非常以Eclipse为中心.如果您不使用eclipse,我认为它没有多大意义,但有时在现有项目中更容易合并.

无论哪种方式,您仍然可以使用Apache Felix Maven插件在部署阶段生成OBR元数据.