java - 使用 Maven、OSGi 和 Bndtools

标签 java maven osgi bndtools

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

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

当然,使用 Maven 有很多优势,但是将其与 OSGi 或专门与 Bndtools 结合真的是一件好事吗?

有人可以提供优势或劣势!有人有使用这两种方法的实践经验吗?

最佳答案

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

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

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

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

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

关于java - 使用 Maven、OSGi 和 Bndtools,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567325/

相关文章:

java - @Produces 基于条件的注解

java - OSGI 缺少需求错误

java - 合并现有对象不会更新数据库中更改的@Embedded

java - 如何计算耶拿猫头鹰类的人数?

java - 检索具有 2 个不同类的 JTextArea 上的 GPS 数据

java - 在 Netbeans 中找不到 Maven

java - Maven exec 插件将参数传递给外部可执行文件

java - 使用 Log4j2 从静态方法记录

java - 在 Java 中输出 RFC 3339 时间戳

java - 无法执行目标 org.apache.maven.plugins :maven-release-plugin:2. 5.3:prepare