今天有人问我,在我们当前的OSGi应用程序中使用Maven是否是一个好主意。我们使用了 Bndtools,它很棒,因为它使开发尽可能简单。Bndtools 使用 OBR 来维护其他捆绑包和依赖项解析,即使在应用程序运行时也是如此。
由于Maven被广泛传播并且非常受欢迎,因此大多数人也尝试在OSGi环境中使用它。对我来说,这是两种不同的方法。OSGi有自己的依赖声明,即MANIFEST。MF 和 Maven 一个 pom,您可以在其中声明它们。因此,如果同时使用它们,则将声明依赖项两次。当然,您可以使用Apache OSGi Maven插件来避免它,Maven负责创建MANIFEST。中频。但是Maven存储库并不真正关心捆绑包。因此,您可能会引用非捆绑罐
。当然,使用Maven也有优势,但是将其与OSGi或特别是与Bndtools结合使用真的是一件好事吗?
有人可以提供优点或缺点吗!有人有使用两者的实际经验吗?
如果你所做的任何事情都以Maven为中心,那么Apache Felix Maven插件(顺便说一下,也基于BND(是要走的路。
否则,如果你想使用 Maven 但扮演一个不太重要的角色,Eclipse Tycho 很有意义。第谷是一组Maven插件。
使用 Tycho,您可以将目标平台从 Eclipse 提供给 Maven,然后它可以通过查看您的 MANIFEST 和目标平台来解析所有捆绑包。pom.xml 文件对于 Tycho 项目来说非常简单,因为它们不包含您的依赖项。
第谷显然非常以Eclipse为中心。如果你不使用 eclipse,我认为它没有多大意义,但有时合并到现有项目中更容易。
无论哪种方式,您仍然可以使用 Apache Felix Maven 插件在部署阶段生成 OBR 元数据。
Maven与OSGi项目一起使用效果很好。您可以使用Felix Maven BND插件使您的生活更轻松。有了这个,maven可以在您的本地(或远程(maven存储库中自动生成OBR元数据。这使您可以将maven存储库也视为OBR。它使OSGi项目的工作流程与其他项目相同,并且一切都非常无缝且相当易于使用。
我们在工作中使用它,而Maven确实使事情更容易使用。例如,我们使用 Maven 生成 Eclipse 项目文件,在 CI 服务器上运行自动生成,以及创建 OBR 元数据。
对于那些现在提出这个问题的人来说,自从最初提出这个问题以来已经过去了很长时间。Neil Bartlett上面提到的Maven工作已经成熟,现在Bnd/Bndtools和Maven之间有很好的集成,包括Eclipse/Bndtools的m2e连接器。
Neil与Tim Ward共同制作了一张幻灯片:
https://www.slideshare.net/mfrancis/bndtools-and-maven-a-brave-new-world-n-bartlett-t-ward