2013-02-22 79 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倉庫訪問權限,則只需使用功能文件(例如在開發中)即可。