需要帮助使用Karaf的功能 - maven-plugin maven插件... osgi

时间:2013-02-22 01:28:52

标签: java maven osgi apache-karaf

我的目标是为我的多模块maven项目创建一个features.xml,并收集各种功能所需的所有必需的jar。我需要通过file解析bundle jars:而不是mvn:

我尝试使用这些功能:generate-features-xml目标。首先,没有关于属性文件格式应该是什么样的文档。其次,它创建了所有由mvn解决的包:例如。

<feature name='spring-jms' version='3.1.0.RELEASE'>
  <bundle>mvn:org.springframework/spring-tx/3.1.0.RELEASE</bundle>
  <feature version='3.1.0.RELEASE'>spring-core</feature>
  <bundle>mvn:org.codehaus.jackson/jackson-core-asl/1.9.9</bundle>
  <bundle>mvn:org.springframework/spring-jms/3.1.0.RELEASE</bundle>
</feature>

我的第一个问题是有没有办法通过文件访问捆绑包:而不是mvn:? E.g。

<bundle>file:some/path/spring-tx.jar</bundle>  

或其他什么。

第二个问题:收集所有必需的jar文件的最佳方法是什么?我一直在使用maven程序集插件,但这似乎不是最理想的。

感谢。

1 个答案:

答案 0 :(得分:2)

您可以使用文件格式来处理功能文件中的捆绑包,但maven功能插件仅支持maven解析。

您的应用程序的最终用户通常无法访问互联网。你仍然可以使用maven分辨率。您有两个主要选择:

  • 使用karaf功能插件从功能创建maven repo。然后,您可以将此目录添加到org.ops4j.pax.url.mvn.cfg中的maven repos列表
  • 从karaf 2.3开始,您可以使用kar文件。 kar文件是maven repo的zip和指向其中的features文件的指针。您可以将kar文件放入karaf的deploy文件夹中,它将安装该功能

关于这一点的好处是你的特征文件总是基于你的工件的maven id。你只会改变你交付罐子的方式。因此,在您拥有互联网或maven repo访问权限的情况下,您只需使用功能文件(例如在开发中)。