2017-06-22 41 views
0

我已經創建了一個OSGI包A和一個jar B,A依賴於B. 我也在Karaf 4.1.1上成功部署了A和B. B被部署爲包裝的Maven jar(bundle:install -s mvn:....)。在Apache Karaf中更新包Maven jar的正確方法是什麼?

現在B有一些變化,所以我已經將它重新部署到我們的Nexus服務器中,我也想將新B部署到Karaf中。

但我發現,如果我只在Karaf更新B,A仍然使用老B,甚至我有重啓A. 我必須卸載並重新安裝b鍵使使用新的B.

因爲B是一個通用的庫,所以會有很多其他的bundle依賴於B. 而B也被我們其他的非OSGI應用程序所使用,所以我不想把它作爲OSGI捆綁。

這是正確的方式來更新卡拉夫包裹Maven罐子? 還是有什麼建議?

回答

1

該問題與「包裝組件」無關。使用wrap協議安裝後,jar被認爲是正常的OSGI包。

但是,請記住,卡拉夫手錶只改變從SNAPSHOT捆綁

所以:

  • 在你DEVELOPPEMENT ENVIRONNEMENT,疊B可以是快照版本。因此,您可以立即觀看您的更改(只需確保在您的karaf命令行中點擊軟件包即可觀看*)。捆綁檢測B的變化也立即。

  • 在您的生產環境中,捆綁包B必須處於發佈版本。因此,要在B中部署新更改,必須安裝新版本並刪除舊版本。

    如果你想告知B有兩個不同版本的部署,並強制使用新版本,您可以通過修改導入包這樣做出一些改變成捆答:

    ... 
    bundle_B_package*;version="[bundle_B_new_version,bundle_B_new_version + 1)", 
    ... 
    

在這裏,我們採用語義版本:)

+0

酷,感謝您的幫助! –

相關問題