0

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

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

我想做的是:

mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib

你有什么建议?谢谢

4

2 回答 2

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 插件来自动执行通常在 bndtools UI 中执行的解析和导出步骤。这个插件可能会成为下一个 bnd 版本的一部分。

请参阅osgi-chat 示例

karaf 变体得到了更多的证明,因为它已经存在更长时间了,但 karaf 不是普通的 felix。karaf 的优势在于它为典型的大型项目提供了很多功能。所以更容易得到这个工作。

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

于 2016-07-17T07:17:29.417 回答
1

非常感谢克里斯蒂安的详细回答

自从我发布我的问题以来,我发现以下文档Cooking with Maven and OSGi,基于 Maven Pax Plugin

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

再次,非常感谢

于 2016-07-18T08:54:23.557 回答