首先,我是 OSGi/Maven 的初学者,我正在研究如何有效地使用这些工具(目前,我预计将使用 Felix 作为我的 OSGi 实现)
我想创建一个基于许多捆绑包的项目。当然,每次我对我的一个(或多个)捆绑包进行修改时,我都不想“手动”重新部署
我想做的是:
mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib
你有什么建议?谢谢
首先,我是 OSGi/Maven 的初学者,我正在研究如何有效地使用这些工具(目前,我预计将使用 Felix 作为我的 OSGi 实现)
我想创建一个基于许多捆绑包的项目。当然,每次我对我的一个(或多个)捆绑包进行修改时,我都不想“手动”重新部署
我想做的是:
mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib
你有什么建议?谢谢
有两种选择可以让您到达那里。
您可以:
使用 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 中包含所有依赖项。积极的方面是它创建了一个非常小的可部署对象,并且解析器可以帮助您获得正确的依赖关系。
非常感谢克里斯蒂安的详细回答
自从我发布我的问题以来,我发现以下文档Cooking with Maven and OSGi,基于 Maven Pax Plugin
它提供了在任何 OSGi 实现(不仅是 Karaf)上工作的优势。目前我正在研究这个选项......
再次,非常感谢