【问题标题】:How do I add 3rd-party OSGi bundles to a deployment package with Maven?如何使用 Maven 将第 3 方 OSGi 捆绑包添加到部署包中?
【发布时间】:2010-12-06 23:50:40
【问题描述】:

我正在构建我的应用程序以在 OSGi 容器中运行。我使用 Maven 和 Apache Felix 的 Maven Bundle Plugin 为我自己的模块设置 OSGi 清单,效果很好。

现在,我将我的捆绑包连同几个第 3 方库一起部署到一个 OSGi 容器中。当我从 Maven 存储库中获取它们时,其中一些已经是 OSGi 的,其他的,我想转换为 OSGi 兼容的 jar。我想建立一个 Maven 项目来收集所有依赖项,并将每个依赖项放在自己的 OSGi jar 中。最终目标是将这些 jar 和我自己的 jar 收集到一个可以用作独立部署包的程序集中。

我知道如何使用convert standard jars to OSGi jars,并且我对merge multiple OSGi bundles 有一种(有点骇人听闻的)方法,即使我可能不应该这样做。但是,如果我有一个已经很好的依赖项,并且我只想将它从 repo 复制到我的程序集中,那么我使用 Maven 的哪个部分?捆绑插件是错误的,如果依赖项已经与 OSGi 兼容,它会弄乱清单。我是使用依赖插件、程序集插件还是其他东西?

我觉得我在这里忽略了一些非常简单的事情。

【问题讨论】:

    标签: maven-2 osgi


    【解决方案1】:

    我们使用了许多未经供应商 OSG 化且在 Spring 捆绑存储库中不可用的库。我们也有许多这样的,并希望将它们一起部署起来无忧无虑。为此,我们创建了一个 2 层 maven 设置:

    1. 下载或包含(视“系统”范围而定)相关第 3 方库的单个 maven 项目,并使用 Apache Felix bundle plugin 对这些项目进行 OSG 化
    2. 一个容器项目依赖于所有这些小项目,并使用核心 assembly maven plugin 将它们组合在一起。此 POM 还使用 maven 的复制依赖目标来确保一切就绪。

    一旦它变成一个程序集(我们的是一个 tar 文件),我们就会将它部署到我们的服务器上。我们更进一步,将这个第 3 方库的组件用作我们的 Eclipse 构建环境的目标平台。但这可能与您无关。

    【讨论】:

    • 第 2 步是我要求的,第 1 步也很有帮助。谢谢。
    【解决方案2】:

    您看过 PAX 工具吗?特别是Pax-Runnerpax-construct...他们不仅为您提供了一个不错的模板,而且还免费解决了您提到的大多数问题。

    【讨论】:

    • 我也推荐 Pax 工具套件。
    • 哇,它们看起来确实不错,但我现在不得不推迟。我对 Maven 感觉很好,目前,我应该交付而不是获得更多工具。无论如何,很好的提示!
    【解决方案3】:

    您可以从 Spring 捆绑存储库中获取许多常见工件的 OSGi 友好版本。所以你可能不必自己做。

    查看how to configure Maven 捆绑存储库的详细信息。

    (将更新一些尚未作为捆绑包提供的想法)

    【讨论】:

    • 不,我知道如何得到它们。我想知道如何使用 Maven 自动将它们包含在部署包和/或测试环境中。
    • 对不起,我想我不明白你到底想做什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 2020-03-12
    • 2011-06-19
    • 2016-07-24
    • 2011-11-16
    • 2020-05-04
    相关资源
    最近更新 更多