2017-03-24 39 views
0

我正在嘗試使用Maven(和NetBeans)創建一個Karaf程序集。我使用聲明式服務創建捆綁包,但創建功能文件時遇到問題。我的部分問題是OSGi生成的錯誤消息。但我有一個更一般的問題。爲Karaf生成功能文件的正確方法?

我發現我可以在創建我的包的項目中調用karaf-maven-plugin,它會根據包的依賴關係生成似乎是全面填充的功能文件。 (方法1)

但是,我已經閱讀了某個地方,創建一個karaf-maven-plugin的功能文件通常應該只在一個包含feature的項目中完成。如果我這樣做,在我看來,我必須手動創建功能文件,這不是很有趣。 (方法2)

無論使用哪種方法,我都無法成功生成一個卡拉夫程序集,其中包含除簡單包以外的任何內容而沒有任何依賴關係。我目前堅持試圖安裝一個需要包裝一些非OSGi依賴項的包。以上方法1生成wrap填充(<feature>wrap:協議)。我得到的是以下錯誤:

Failed to execute goal org.apache.karaf.tooling:karaf-maven-plugin:4.1.0:assembly (default-assembly) on project EnoceanBridgeAdmin: Unable to build assembly: [wrap/0.0.0]

EnoceanBridgeAdminkaraf-assembly包裝,我試圖建立。它有一個包含所生成的特徵文件(其中wrap引用)的包的依賴:

<dependency> 
    <groupId>net.winnall.enocean.service.impl</groupId> 
    <artifactId>EnoceanBridgeSASS.Impl</artifactId> 
    <version>0.99.99</version> 
    <type>xml</type> 
    <classifier>features</classifier> 
</dependency> 

所以我的問題:

  1. 高於正確的使用方法1?
  2. 我可以自動生成要使用方法2的功能文件嗎?
  3. 將方法1或方法2分類後,錯誤消息會消失嗎?

史蒂夫

回答

0

我有這個決心自己。

  1. 方法1不起作用,因爲karaf-maven-plugin生成wrap<feature>定義。這些導致上述錯誤。顯然 - 至少在Karaf 4.1.0 - wrap:協議中使用的特徵文件沒有先前的<feature>定義。
  2. 由於karaf-maven-plugin的行爲,方法2(自己寫入功能文件)是唯一可行的選項。
  3. 是的,錯誤信息消失了:-)
相關問題