0

首先,我是OSGi/Maven的初學者,我正在研究如何使用這些工具有效地工作(目前,我預測將使用Felix作爲我的OSGi實現)使用maven構建OSGi發行版的高效方式

我想創建一個基於許多捆綁的項目。當然,每一次我做的修改上一個(或多個)我的包(一個或多個),我不想重新部署「手動」

我想要做的是一樣的東西:

mvn buildMyOsgiDistrib 
mvn runMyOsgiDistrib 

你對我有什麼建議? 謝謝

回答

2

有兩個選項可以讓你在那裏。

您可以:

使用Apache Karaf並創建一個自定義分佈

您可以創建一個項目karaf特徵文件,並使用karaf - Maven的插件來創建自定義karaf發行。

看到這個例子https://github.com/cschneider/decanter-docker/blob/master/decanter-server/pom.xml

使用bndtools來組裝您的應用程序。

在這種情況下,您將創建一個包含您的依賴項的pom,並使用bnd-indexer-plugin從它創建一個OBR索引。

然後,您可以在獨立模式下使用bndrun文件來定義頂級依賴關係,並讓解析器根據您在上面創建的回購庫解決它們。

我創建了一個通常在bndtools UI中執行的maven plugin to automate the resolve and export step。這個插件可能會成爲下一個版本的一部分。

查看osgi-chat example

卡拉夫變種更爲成熟,因爲它已經存在了更長的時間,但卡拉夫不是普通的變形蟲。卡拉夫的優勢在於它對於典型的大型項目具有很多功能。所以這很容易得到這個工作。

bndtools變種不像他們剛剛開始支持maven那樣成立。您還必須將所有依賴關係自己包含在該索引的pom中。積極的方面是,它創建了一個非常小的可部署,並且解析器可以幫助您很大程度上正確地獲得您的依賴關係。

1

非常感謝您基督教這個詳細的解答

因爲我貼我的問題,我發現下面的文檔Cooking with Maven and OSGi,基於Maven的大同插件

它提供了優勢,在任何OSGi實現工作(不僅卡拉夫)。目前我正在學習什麼這個選項...

再次,非常感謝你

+0

我覺得廚師書還有PAX插件已經過時了很長的時間。正如你在版權中看到的那樣,烹飪書是從2009年開始的。如果您搜索的解決方案不是卡拉夫特定的,我推薦使用bndtools。 –