今天我被问到在我们当前的OSGi应用程序中使用Maven是个好主意.我们使用Bndtools和它的伟大,因为它使开发尽可能容易. Bndtools使用OBR来维护其他捆绑包和依赖关系分辨率,即使在应用程序运行.
由于Maven广泛传播并且非常受欢迎,所以大多数人都尝试在OSGi环境中使用它.对我来说,这是两种不同的方法. OSGi有一个自己的依赖声明,MANIFEST.MF和Maven一个pom,您可以在其中声明它们.所以如果你使用这两个,你将声明依赖关系两次.当然,您可以使用Apache OSGi Maven插件来避免它,Maven负责创建MANIFEST.MF.但是Maven存储库并不关心bundle.所以可能会发生,你正在引用一个非捆绑jar.
当然,使用Maven有优势,但是将其与OSGi或特殊的Bndtools结合起来真的是件好事吗?
有人可以提供优势或劣势!有人有实践经验使用两者吗?
@R_502_323@
我认为,如果你做的任何事情都围绕着Maven,那么Apache Felix Maven插件(也就是基于BND)就是要走的路.
否则,如果你想使用Maven,但不太重要的角色,Eclipse Tycho有很大的意义. Tycho是一套Maven插件.
使用Tycho,您可以将目标平台从Eclipse提供给Maven,然后可以通过查看您的MANIFEST和目标平台来解决所有软件包.对于Tycho项目,pom.xml文件非常简单,因为它们不包含您的依赖关系.
Tycho显然是以Eclipse为中心的.如果你不使用eclipse,我不认为这是很有意义的,但有时在现有项目中加入更容易.