java – 使用Maven,OSGi和Bndtools

今天我被问到在我们当前的Osgi应用程序中使用Maven是个好主意.我们使用bndtools和它的伟大,因为它使开发尽可能容易. bndtools使用OBR来维护其他捆绑包和依赖关系分辨率,即使在应用程序运行.

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

当然,使用Maven有优势,但是将其与Osgi或特殊的bndtools结合起来真的是件好事吗?

有人可以提供优势或劣势!有人有实践经验使用两者吗?

解决方法

我认为,如果你做的任何事情都围绕着Maven,那么Apache Felix Maven插件(也就是基于BND)就是要走的路.

否则,如果你想使用Maven,但不太重要的角色,Eclipse Tycho有很大的意义. Tycho是一套Maven插件.

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

Tycho显然是以Eclipse为中心的.如果你不使用eclipse,我不认为这是很有意义的,但有时在现有项目中加入更容易.

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

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...