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

使用maven构建OSGi发行版的有效方法,osgi,maven-assembly-plugin,apache-felix,osgi-bundle,felix-dependency-manager,Osgi,Maven Assembly Plugin,Apache Felix,Osgi Bundle,Felix Dependency Manager,首先,我是OSGi/Maven的初学者,我正在研究如何有效地使用这些工具(目前,我预测将使用Felix作为我的OSGi实现) 我想创建一个基于许多捆绑包的项目。当然,每次我对一个(或多个)捆绑包进行修改时,我都不想“手动”重新部署 我想做的是: mvn buildMyOsgiDistrib mvn runMyOsgiDistrib 你有什么建议吗? 谢谢有两种选择可以帮助您实现目标 您可以: 使用Apache Karaf并创建自定义发行版 您可以在一个项目中创建一个karaf功能文件,并使用k

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

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

我想做的是:

mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib
你有什么建议吗?
谢谢

有两种选择可以帮助您实现目标

您可以:

使用Apache Karaf并创建自定义发行版

您可以在一个项目中创建一个karaf功能文件,并使用karaf maven插件创建一个自定义karaf发行版

看看这个例子

使用bndtools组装应用程序。

在本例中,您使用依赖项创建pom,并使用bnd indexer插件从中创建OBR索引

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

我创建了一个通常在bndtools UI中执行的。这个插件可能是下一个bnd版本的一部分

karaf变体更为成熟,因为它已经存在了更长的时间,但karaf不是普通的felix。karaf的优势在于,对于典型的大型项目,它具有许多特性。所以更容易让它工作


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

有两个选项可以帮助您实现这一点

您可以:

使用Apache Karaf并创建自定义发行版

您可以在一个项目中创建一个karaf功能文件,并使用karaf maven插件创建一个自定义karaf发行版

看看这个例子

使用bndtools组装应用程序。

在本例中,您使用依赖项创建pom,并使用bnd indexer插件从中创建OBR索引

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

我创建了一个通常在bndtools UI中执行的。这个插件可能是下一个bnd版本的一部分

karaf变体更为成熟,因为它已经存在了更长的时间,但karaf不是普通的felix。karaf的优势在于,对于典型的大型项目,它具有许多特性。所以更容易让它工作


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

非常感谢Christian给出的详细答案

由于我发布了我的问题,我发现了以下基于Maven Pax插件的文档

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


再次,非常感谢您

非常感谢Christian给出的详细答案

由于我发布了我的问题,我发现了以下基于Maven Pax插件的文档

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


再次感谢大家

我认为烹饪书和pax插件已经过时很久了。正如你在版权中看到的,这本烹饪书是2009年出版的。如果你搜索的解决方案不是针对karaf的,我推荐bndtools。我认为cook book和pax插件已经过时很久了。正如你在版权中看到的,这本烹饪书是2009年出版的。如果您搜索的解决方案不是特定于karaf的,我建议使用bndtools。