如何使用Maven将第三方OSGi包添加到部署包中?

时间:2009-10-15 10:42:25

标签: maven-2 osgi

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

现在,我正在将我的bundle与几个第三方库一起部署到OSGi容器中。当我从Maven回购中获取它们时,其中一些已经是OSGi-fied,其他的,我想转换成OSGi兼容的jar。我想设置一个收集所有依赖项的Maven项目,并将每个项目放在自己的OSGi jar中。最终目标是将这些罐子和我自己的罐子收集到一个可以作为独立部署包使用的组件中。

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

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

我们使用许多供应商未提供OSG的库,这些库在Spring bundle存储库中不可用。我们也有很多这些,并希望一起轻松部署它们。为此我们创建了一个2层maven设置:

  1. 下载或包含(作为“系统”范围取决于)相关第三方库的单个maven项目,并使用Apache Felix bundle plugin
  2. OSGify这些项目
  3. 一个容器项目,它依赖于所有这些小项目,并使用核心assembly maven plugin组装它们。此POM还使用maven的copy-dependencies目标来确保一切就绪。
  4. 一旦将它转换为程序集(我们的是tar文件),我们就将其部署到我们的服务器上。我们更进一步,使用第三方库的这个程序集作为Eclipse构建环境的目标平台。但这可能与你无关。

答案 2 :(得分:0)

您可以从Spring bundle repository获取许多常见工件的OSGi友好版本。所以你可能不必亲自去做。

详细了解how to configure Maven的捆绑存储库。

(将针对那些尚未作为捆绑包提供的想法进行更新)