10

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

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

当然,使用 Maven 也有好处,但是将它与 OSGi 或特别与 Bndtools 结合真的是一件好事吗?

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

4

3 回答 3

8

我认为,如果您所做的几乎所有事情都以 Maven 为中心,那么 Apache Felix Maven 插件(顺便说一下,也是基于 BND)是要走的路。

否则,如果您想使用 Maven 但扮演一个不太重要的角色,Eclipse Tycho会很有意义。Tycho 是一组 Maven 插件。

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

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

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

于 2012-05-13T09:36:13.310 回答
4

我认为在 OSGi 项目中使用 Maven 效果很好。您可以使用Felix Maven BND 插件让您的生活更轻松。有了这个,maven 可以在本地(或远程)maven 存储库中自动生成 OBR 元数据。这使您也可以将 Maven 存储库视为 OBR。它使 OSGi 项目的工作流程与其他项目相同,并且一切都非常无缝且相当易于使用。

我们在工作中使用它,而 Maven 确实让事情变得更容易使用。例如,我们使用 Maven 生成 Eclipse 项目文件,在 CI 服务器上运行自动构建,并创建 OBR 元数据。

于 2012-05-12T20:55:07.157 回答
1

对于现在提出这个问题的人来说,距离最初提出这个问题已经过去了很长时间。上面 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

于 2019-02-19T02:17:47.443 回答