9

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

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

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

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

4

1 回答 1

9

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

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

如果您不想一个一个地安装每个捆绑包,则可以使用此处描述的所谓功能。一个特性列出了所有需要的包:

<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
于 2014-03-07T16:39:02.480 回答