【问题标题】:Efficient way of building an OSGi distribution with maven使用 maven 构建 OSGi 发行版的有效方法
【发布时间】:2016-07-16 05:56:45
【问题描述】:

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

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

我想做的是这样的:

mvn buildMyOsgiDistrib
mvn runMyOsgiDistrib

你有什么建议? 谢谢

【问题讨论】:

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


    【解决方案1】:

    有两个选项可以让你到达那里。

    您可以:

    使用 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 解析它们。

    我创建了一个通常在 bndtools UI 中执行的maven plugin to automate the resolve and export step。该插件可能会成为下一个 bnd 版本的一部分。

    请参阅osgi-chat example

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

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

    【讨论】:

      【解决方案2】:

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

      自从我发布我的问题后,我发现了以下文档 Cooking with Maven and OSGi,基于 Maven Pax 插件

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

      再次感谢您

      【讨论】:

      • 我认为cook book和pax插件已经过时了很长时间。正如您在版权中看到的,这本食谱来自 2009 年。如果您搜索的解决方案不是 karaf 特定的,我建议您使用 bndtools。
      猜你喜欢
      • 2015-07-14
      • 2017-05-09
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2012-01-11
      • 1970-01-01
      相关资源
      最近更新 更多