2016-11-10 97 views
0

我對OSGi世界相對較新,需要幫助來了解如何自動化構建過程。 我自己熟悉在Eclipse中使用bndtool,並學會了如何解決依賴關係,運行,測試,調試和生成獨立的jar。我也瀏覽了OSGi官方網站上發佈的基本和Maven教程。 我的問題是如何自動化我的構建!所以,假設我在SVN中有代碼。我需要能夠檢查代碼,然後運行構建腳本/工具來生成捆綁包,然後我可以使用Felix或Karaf進行部署。 基於Maven的官方教程(帶有OSGi enRoute)僅顯示如何生成獨立的jar,這不是我感興趣的東西;我需要生成捆綁。 我讀過關於Maven Bundle Plugin的內容,但我想在使用它時,我將失去基於UI的bndtools在Eclipse中提供的所有豪華功能。 非常感謝您的幫助!如何自動化bndtools構建

回答

1

如果你用bndtools使用maven構建,那麼你確實會失去一些好處。我有一個使用Maven構建的完整項目的例子。見osgi-chat。它使用bnd-maven-plugin來構建捆綁包,但您也可以使用maven-bundle-plugin。在這兩種情況下,您都可以在eclipse中使用標準的m2e支持。 Bndtools然後只涉及解決捆綁和創建可運行的jar。

我們在apache社區的許多項目中使用純maven方法。這是在Apache karaf上部署的經過驗證的方式。如果你想部署到卡拉夫,那麼bndtools不會有太大的幫助,因爲它不能創建卡拉夫功能。

如果你想把所有的IDE支持bndtools的再使用原生bndtools建立了bndtools工作區(CNF目錄),並使用gradle這個構建它提供。

0

Bndtools配備了gradle這個插件,你可以用它來輸出一個可執行的JAR但如果你只是運行生成的罐子會在每個項目的生成的文件夾可用。

可以使用runbundles任務根據.bndrun文件導出包(類似以生成可執行的JAR只是創建一個包含包的文件夾)

0

作爲一個長期的Maven用戶,也因爲我我打算使用karaf(jboss導火索),我遵循了Christian的建議,花了一些時間探索maven-bundle-plugin並計劃探索bnd-maven-plugin。 從關於bnd-maven-plugin的第一次讀物中,我發現它比apache插件有一些優點(直接從bnd而不是pom獲得指令;預計更新與bnd更新並行)。有一件事我仍然需要了解這個插件:哪個OSGi發佈版本爲它生成捆綁包?根據官方網站的說法,我知道maven-bundle-plugin只爲R4生成,這是一個限制。那麼bnd-maven-plugin呢? 還有一個問題:哪些插件可用於生成karaf kars,並且可以將它們與bnd-bundle-plugin結合使用? 非常感謝您的耐心等待!

0

我花了一些時間探索bnd-maven插件。 這是我能找到的混合Eclipse中的BND-Maven的插件和bndtools的最佳方式: 1.使用bndtools解決的要求,並在Eclipse中運行的框架內束。 2.使用bnd-maven-plugin構建捆綁軟件 3.使用'indexer'插件生成一個索引文件,用於bndtools的依賴關係解析。 儘管此方法允許從Eclipse內部運行包,但每次都需要'mvn install',因爲bndtools插件不知道如何解析來自Eclipse工作區的依賴關係。這種方法也使得在Eclipse中調試代碼變得不可能。有沒有更好的選擇?

謝謝