使用maven构建OSGi分发的有效方法

时间:2016-07-16 05:56:45

标签: osgi maven-assembly-plugin apache-felix osgi-bundle felix-dependency-manager

首先,我是OSGi / Maven的初学者,我正在研究如何有效地使用这些工具(目前,我预测将使用Felix作为我的OSGi实现)

我想基于许多捆绑创建一个项目。当然,每次我对我的一个(或多个)软件包进行修改时,我都不想“手动”重新部署

我想做的是:

mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib

你有什么建议我? 感谢

2 个答案:

答案 0 :(得分:2)

有两种选择可以帮助你。

你可以:

使用Apache Karaf并创建自定义分发

您在一个项目中创建一个karaf功能文件,并使用karaf-maven-plugin创建一个自定义的karaf发行版。

请参阅此示例https://github.com/cschneider/decanter-docker/blob/master/decanter-server/pom.xml

使用bndtools来组装您的应用程序。

在这种情况下,您使用依赖项创建一个pom,并使用bnd-indexer-plugin从中创建一个OBR索引。

然后,您可以在独立模式下使用bndrun文件来定义顶级依赖项,并让解析器根据您在上面创建的repo解析它们。

我创建了一个maven plugin to automate the resolve and export step,通常在bndtools UI中执行。这个插件很可能是下一个版本的一部分。

请参阅osgi-chat example

karaf变种更为成熟,因为它存在的时间更长,但karaf不是普通的felix。 karaf的优势在于它具有许多典型大型项目的功能。因此,更容易实现这一点。

bndtools变体并不像刚刚开始支持maven那样成熟。您还必须在索引的pom中包含所有依赖项。积极的方面是它创建了一个非常小的可部署,并且解析器可以帮助您获得很多依赖性。

答案 1 :(得分:1)

非常感谢克里斯蒂安提供这个详细的答案

自从我发布问题以来,我根据Maven Pax插件找到了以下文档Cooking with Maven and OSGi

它提供了在任何OSGi实现(不仅是Karaf)上工作的优势。目前我正在研究这个选项......

再一次,非常感谢