如何使用maven项目轻松部署到Karaf Osgi容器

时间:2014-03-07 15:50:35

标签: maven osgi apache-karaf karaf karaf-maven-plugin

我正在开发一个OSGI包,用于使用PDFBox库解析PDF文件。我使用maven构建项目,使用Karaf作为OSGI容器。 PDFBox库与OSGI兼容,所以我认为这很容易。但我无法正确获得部署模型。

在传统的Web应用程序中,我将构建一个包含所有依赖项的WAR文件,并将其放入Servlet容器中,然后部署它。另一方面,我想出如何安装osgi包的唯一方法是手工完成。我必须创建一个安装指令文件,列出必须手动下载并复制到Karaf部署文件夹的所有依赖项,并确保按正确的顺序执行。我觉得自己又回到了石器时代。

必须有一种更简单的方法,对吧?我仍然使用maven来声明依赖项,但我只需要使用提供的范围。如果可以自动安装这些依赖项,那就太好了。

我正在使用maven-bundle-plugin从我的应用程序生成一个包。它确实生成了一个OBR存储库(repository.xml),我尝试使用obr karaf插件安装我的软件包,但它仍然无法帮助依赖。

1 个答案:

答案 0 :(得分:9)

配置捆绑包有不同的可能性。我更喜欢通过Karaf控制台使用Maven安装捆绑包,例如:

install mvn:org.apache.pdfbox/pdfbox/1.8.4

如果您不想逐个安装每个捆绑包,可以使用所谓的功能,如here所述。功能列出了所有需要的包:

<feature name='my-project' version='1.0.0'>
    <feature version='2.4.0'>camel-spring</feature>
    <bundle start-level='80' start='false'>mvn:com.mycompany.myproject/myproject-dao</bundle>    
    <bundle start-level='85' start='false'>mvn:com.mycompany.myproject/myproject-service</bundle>
    <bundle start-level='85' start='false'>mvn:com.mycompany.myproject/myproject-camel-routing</bundle>
</feature> 

您可以通过Karaf控制台添加功能:

features:addUrl mvn:org.apache.servicemix.nmr/apache-servicemix-nmr/1.0.0-m2/xml/features
features:install nmr

您也可以使用mvn处理程序代替file处理程序:

features:addUrl file:base/features/features.xml