我正在开发一个OSGI包,用于使用PDFBox库解析PDF文件。我使用maven构建项目,使用Karaf作为OSGI容器。 PDFBox库与OSGI兼容,所以我认为这很容易。但我无法正确获得部署模型。
在传统的Web应用程序中,我将构建一个包含所有依赖项的WAR文件,并将其放入Servlet容器中,然后部署它。另一方面,我想出如何安装osgi包的唯一方法是手工完成。我必须创建一个安装指令文件,列出必须手动下载并复制到Karaf部署文件夹的所有依赖项,并确保按正确的顺序执行。我觉得自己又回到了石器时代。
必须有一种更简单的方法,对吧?我仍然使用maven来声明依赖项,但我只需要使用提供的范围。如果可以自动安装这些依赖项,那就太好了。
我正在使用maven-bundle-plugin从我的应用程序生成一个包。它确实生成了一个OBR存储库(repository.xml),我尝试使用obr karaf插件安装我的软件包,但它仍然无法帮助依赖。
答案 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