今天有人问我是否是在我国目前的OSGi应用程序使用Maven是一个好主意。 我们使用Bndtools及其伟大的,因为它使开发尽可能容易。 Bndtools使用OBR保持其他包,甚至在应用程序运行依赖解析。
由于Maven是广泛传播四周,是如此的流行,大多都尝试在OSGi的环境中使用它。 对我来说,这是两个不同的方法。 OSGi的具有依赖性的自己的声明中,MANIFEST.MF和Maven一个POM,在那里你可以申报。 所以,如果你使用他们两个,你会声明依赖两次。 当然你也可以使用Apache的OSGi Maven插件,以避免它和Maven是负责创建MANIFEST.MF。 但Maven资源库并不真正关心束。 因此,它可以发生,你正在引用到非捆绑罐子。
当然,也有使用Maven的优势,但是否真的将其与OSGi的或特意用Bndtools结合的好事吗?
可能有人提供优点或缺点! 与同时使用别人的实践经验?
我想,如果相当多的东西,你做Maven的周围,然后阿帕奇菲利克斯的Maven插件(也是基于BND,顺便说一句)中心是要走的路。
否则,如果你想使用Maven,但在一个不太核心作用, Eclipse的第谷使得有很大的意义。 第谷是一组Maven插件的。
使用第谷您提供从Eclipse中的目标平台Maven的,然后它可以通过看你的清单和目标平台解决所有包。 pom.xml中文件是第谷项目很简单,因为它们不包含您的依赖。
第谷显然是非常Eclipse的中心。 如果你不使用Eclipse的,我不认为它使多大意义,但有时更容易在现有的项目纳入。
无论哪种方式,你仍然可以使用Apache菲利克斯的Maven插件生成在部署阶段OBR的元数据。
我认为使用Maven OSGi的项目运作非常良好。 您可以使用菲利克斯的Maven插件BND使您的生活轻松了许多。 有了这个,Maven可以自动生成本地(或远程)Maven仓库OBR元数据。 这可以让你把你的Maven仓库为OBR为好。 它使OSGi的工作流项目同其他项目,一切都非常无缝的,相当容易使用。
我们用它在工作中,和Maven真的让事情变得更容易使用。 例如,我们使用Maven生成Eclipse项目文件,运行自动化构建CI服务器上,并创建OBR的元数据。
对于那些现在来这个问题,大量的时间已经过去了,因为它最初是问。 尼尔巴特利特上面提到的Maven的工作已经成熟,并有BND / Bndtools和Maven之间相当不错的整合目前,包括为Eclipse / Bndtools的M2E连接器。
尼尔合着这个与沃德添幻灯片:
https://www.slideshare.net/mfrancis/bndtools-and-maven-a-brave-new-world-n-bartlett-t-ward