【问题标题】:package OSGI project as a single jar?将 OSGI 项目打包为单个 jar?
【发布时间】:2011-10-06 03:41:50
【问题描述】:

我有一个大型 OSGI 包,我想打包并作为单个 jar 文件发布。我正在尝试找出将多个罐子打包成一个大罐子的最佳方法。

到目前为止,我见过的最佳选择似乎是单罐项目。但是,我们使用的框架从“插件”目录中提取 jar 文件,并且 one-jar 似乎希望/要求所有 jar 文件仅存储在 lib 目录中。可能有一个简单的方法可以解决这个问题,我还没有完全了解架构,因为我仍在尝试确定哪种方法最好。

对于将多个 OSGI 包打包到一个 jar 中的其他方法和/或我将如何使其在一个 jar 中工作的任何建议,我们将不胜感激。

谢谢

【问题讨论】:

  • 我不清楚是否要将整个应用程序(包括 OSGi 运行时)打包为单个可执行 jar 文件;或者,您是否想以某种方式将您的包合并到一个包中以简化部署到 OSGi 运行时?或者,或者您尝试将(非 OSGi 包)嵌入到单个 OSGi 包中?
  • 我希望将所有内容打包到一个 jar 中。他们应该能够通过键入 java -jar application.jar 来运行程序。为了便于使用,无需安装单独的 OSGI 应用程序。该框架使用已经从插件文件夹加载 OSGI 包,而无需使用外部 OSGI 工具;所以这真的就像管理一个 jar 文件一样简单,该文件可以在其插件文件夹中包含其他 jar 文件。

标签: java jar osgi package


【解决方案1】:

另一种解决方案是使用 PojoSR 运行您的包,而不是在 OSGi 框架中运行它们。 PojoSR 简单来说就是在没有模块层的情况下实现了 OSGi 的服务层。这样做的副作用之一是您可以轻松地将应用程序打包为可执行的 JAR 文件。当您运行该 JAR 时,它也不需要在磁盘上创建包缓存。

有关 PojoSR 的更多信息,请访问:

【讨论】:

    【解决方案2】:

    使用 Apache Felix Maven Bundle Plugin,我相信该选项可能会满足您的需求。 http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

    【讨论】:

    • 感谢您的链接。但我忘了说我们所有的构建都使用了 ant。我会看看你提到的捆绑包,但我怀疑因为此时没有使用 Apache 或 maven,所以它无法使用。
    • 插件调用BND工具。您也许可以使用 ANT 对其进行调用。不过,我将无法帮助您如何做到这一点。
    • 实际上插件有一个 ant 目标,我认为它旨在允许插件创建一个 ant build.xml 文件。我会尝试使用它,看看会发生什么。
    • 既然可以直接用BND做Ant任务,为什么还要这么迂回呢?请参阅aQute | BND: Ant Task 但是,我不确定 BND 能否完成您的要求。
    【解决方案3】:

    Apache Sling 的 maven-launchpad-plugin 从捆绑列表中生成可运行的 jar(以及可选的 war 文件和 Karaf 描述符),请参阅 http://sling.apache.org/site/maven-launchpad-plugin.html

    Sling 安装程序可用于从文件系统或其他来源加载其他捆绑包,请参阅http://sling.apache.org/site/jcr-installer-jcrjcrinstall-and-osgiinstaller.html

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 1970-01-01
      • 2013-12-07
      • 2019-02-15
      • 2014-11-23
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多