我认为目前这个领域的支持很差。OSGI 并没有真正定义任何关于部署或打包的内容,因此它取决于其他框架(例如 Eclipse)来提出他们自己的方式来做这件事。
如果您正在构建 RCP(Eclipse 基础)应用程序,那么 Eclipse 系统会完成所有这些工作,直至创建 exe 等。但是构建主要在 Eclipse 工作区上完成,无头构建更棘手。Tycho 项目试图通过加入 Maven 和 Eclipse 构建周期来使这更明智,但是它仍然专注于 RCP 应用程序而不是通用 OSGI。
如果你不做 RCP,这也是我的情况,那么你可能不得不推出自己的解决方案,因为我还没有找到任何通用的解决方案。以下是我们所做工作的概述:
我们定义了一个 POM 项目,其中列出了您的应用程序中包含的所有包。这个项目所做的只是列出引用——让我们称之为“捆绑列表”项目。
然后,我们使用 pax provision 以开发模式运行项目。这是通过将“bundle-list”pom 设置为 pax 项目的配置 pom 的父级来实现的(通常在“provision”文件夹中)。然后,当您启动 pax 时,它会使用该项目中的捆绑包列表来启动 OSGI。“bundle-list”项目中的捆绑包引用必须标记为“提供”范围才能工作。
然后,为了创建一个发行版,我们有另一个项目。该项目还具有“捆绑列表”项目作为其父项目。该项目使用各种插件来创建分发包,包括下载捆绑包 jar。该发行版包括启动 OSGI 的脚本,但这些是手写的,这里没有 pax 系统。
这很适合我们将包列表保存在一个地方,但是仍然有很多手写脚本,并且在两个系统之间共享配置存在问题 - 例如配置文件、包启动级别等。