2016-09-06 107 views
1

我在玩OSGi。據我所知,爲了安裝和啓動一個包,你需要已經解決了它的依賴關係。由於手動安裝其直接(和不正確)的依賴關係可能會很痛苦,因此已經引入了OBR。OBR服務器執行

我使用費利克斯爲OSGi框架實現,我想通過OBR(即番石榴庫)自動解決我的束dependencys。出於這個原因,我在客戶端上使用了org.apache.felix.bundlerepository

我不確定在服務器端要做什麼。我找不到關於該做什麼的可靠信息。我確信Felix可以在服務器上輕鬆配置,以便作爲「OBR服務器」,但我不知道該怎麼做。 你能幫我嗎?代碼將不勝感激。如果您不能發佈代碼,至少可以告訴我爲了成功設置資源庫(例如felix框架或其他實現此功能的軟件所需的bundle)而需要的常規步驟(或鏈接資源)。

我現在的設置:

  • 菲利克斯;
  • Eclipse霓虹燈;用於日食的Maven(1.7);

感謝所有的答覆!

+0

你是什麼意思的「在服務器端」?你想知道如何將捆綁包部署到OSGi實例,或者如何設置一個存儲庫,在解決像Maven存儲庫這樣的依賴關係時可以從中獲取捆綁包? –

+0

對不起,如果我不清楚。我想設置一個存儲庫,在那裏我可以從OSGi實例中獲取bundle來解決依賴關係。 – Koldar

回答

1

沒有爲Sonartype Nexus 2.13一個OBR插件,它允許您提供一個OBR兼容庫。它也可以用來代理現有的Maven倉庫。

然而,建立自己的倉庫前,你可能也想看看bndtools及其解決方法的依賴。 Bndtools還允許您依靠現有的Maven倉庫明確不支持OBR。有一個guide on how to work with Maven,這解釋了他們的方法。

+0

我已經使用BND工具(特別是maven-bundle-plugin)在我的本地maven倉庫中用我的開發包更新OBR倉庫。但是第三方包(比如com.google.guava)呢?我會愚蠢地下載源代碼(如果可用),創建一個maven項目並使用maven-bundle-plugin來更新OBR repository.xml文件。也許(可能)我錯過了一些東西。有沒有辦法說「請在我的OBR存儲庫中添加以下軟件包x.jar」。再次,抱歉,如果我的問題不清楚 – Koldar

0

Karaf Cave提供一個OSGi包存儲庫。

+0

它可以在felix上運行嗎?我知道框架實現可能會定義特定於自己的配置(即felix.auto.deploy.dir) – Koldar

+0

它是一個bundle的集合,所以它肯定可以在felix上運行,但是您應該考慮在Karaf容器中使用它,會更容易配置,管理和運行。 –

1

一個OBR庫的「服務器端」只是由一個索引文件又包含URL鏈接到束。你可以提供這個,不需要任何特殊的服務器軟例如,Apache或Nginx HTTP服務器就足夠了。

+0

我知道OBR只包含在一個XML文件中,而且我知道有一些工具(如BNDTools或maven-bundle-plugin),這些工具可以爲正在開發的項目生成正確的xml文件。但是,假設你需要添加其他依賴項(如'guava'庫):手動創建這樣的xml將是愚蠢的。有沒有一種工具可以幫助你自動爲你添加數據?例如:「我想添加到我的OBR repo'com.google.guava:19.0'do'obr-add /home/koldar/com.google.guava.jar'。 – Koldar

+0

生成索引的工具稱爲bindex 。有很多方法可以使用它,大多數情況下,只要你的repo內容改變了,你就可以作爲一個命令行工具來運行它。或者,有一種方法可以讓文件在回購更改時自動生成索引,但這需要一些額外的服務器端的邏輯,也許你可以說你想以什麼方式工作,我會告訴你是否以及如何完成。 –