2013-02-22 77 views
0

我的目标是为我的多模块maven项目创建一个features.xml,并收集各种功能所需的所有必需的jar。我需要通过文件解析捆绑包:而不是mvn:需要帮助使用Karaf的功能-maven-plugin maven插件... osgi

我尝试使用features: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:? 例如

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

或其他。

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

谢谢。

+0

为什么你需要基于文件的解决方案? – 2013-02-22 11:18:14

+0

我们将此作为产品发货。没有期望最终用户可以访问maven回购站。 – marathon 2013-02-28 23:41:09

回答

2

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

您的应用程序的最终用户无法访问互联网是非常典型的。你仍然可以使用maven解析。您有两个主要选项:

  • 使用karaf功能插件从功能创建maven回购。然后,您可以将此目录添加到org.ops4j.pax.url.mvn.cfg的maven repos列表中。
  • 从karaf 2.3开始,您可以使用kar文件。一个kar文件是一个maven repo的zip文件和一个指向特性文件的指针。你可以把一个kar文件放到karf的deploy文件夹中,它会安装这个功能

这样做的好处是你的特性文件总是基于你的工件的maven id。你只会改变你送瓶子的方式。因此,如果您有Internet或Maven仓库访问权限,则只需使用功能文件(例如在开发中)即可。