2008-08-26 79 views
11

我們已經將OSGi運行時(Equinox)嵌入到自定義的客戶端 - 服務器應用程序中,以促進插件的開發,並且迄今爲止事情進展順利。由於內置了清單編輯器,依賴關係管理和導出嚮導,我們一直在使用Eclipse構建插件。使用Eclipse來管理構建並不是非常有助於通過Hudson進行持續集成。如何管理OSGi構建依賴關係?

我們有OSGi包,它依賴於其他OSGi包。我真的討厭在自定義ANT構建中硬編碼構建順序。我們已經完成了這個過去,這非常可怕。是否有任何構建工具可以輕鬆管理OSGi依賴關係,如果不能自動解決它們的話?有沒有DECENT的例子說明如何做到這一點?

CLARIFICATION:

生成的構建腳本只能通過Eclipse使用。他們需要手動運行Eclipse的部分。我們還得到了Eclipse構建不會有的一些標準目標,我不想修改生成的文件,因爲我可能會重新生成(我知道我可以做include,但我想避免Eclipse gen文件全部一起)

這裏是我的項目佈局:

/ 
-PluginA 
-PluginB 
-PluginC 
. 
. 
. 

在使用Eclipse的PDE,每個插件有一個清單,但沒有build.xml作爲PDE確實對我來說。很難自動化一個gui驅動的過程w/Hudson。我想設置我自己的build.xml來構建每個,但是存在依賴關係和構建順序問題。這些問題由Manifest文件(描述OSGi導入)驅動。例如,PluginC取決於PluginB,它取決於PluginA。它們必須按照正確的順序構建。我意識到我可以手動控制構建順序,我正在尋找一種工具來幫助自動化構建順序依賴項管理。

+0

爲什麼聲明式服務不起作用? – drozzy 2010-10-12 14:32:46

回答

1

關閉了一些老問題...

我們的設置不利於Maven的,由於缺少網絡連接和時機。我知道有一些離線的Maven設置,但是考慮到時間,這一切都太過分了。希望當我們有時間重新構建構建過程時,我們會使用適當的設置。

解決方案涉及Ant,BND和一些自定義ant任務。手動管理各種捆綁軟件依賴性。我們已經在使用Ant; BND和自定義任務將它們結合在一起。自定義任務只是確保我們的bnd/eclipse項目同步。

2

我們使用Buckminster。它是一個構建和組裝框架,它負責解決依賴關係,從各種存儲庫中獲取,構建和打包產品。

這是一個Eclipse Tools項目。它與PDE很好地結合在一起。

這意味着我們用來構建RCP的所有元數據對於Buckminster解析和構建都是非常有用的。例如,feature.xml和Manifest.MF,.product中的Require-Bundle標頭。

現在我們在每個包中都沒有任何構建腳本;我們現在每個產品都有一個版本。 Buckminster照顧行走依賴關係圖。

雖然他們(Buckminster團隊)已經開始使用Hudson來承擔項目本身,但我們花費了一點努力讓現有的巡航控制/螞蟻系統與之協同工作。我相信他們的構建設置也可以下載。

儘管它相對嬰兒期,但我們對它印象深刻。

我們也研究了Pax-Construct但我們不想使用Maven。

我們目前正在尋找Spring DM testing framework來增強單元測試工作。

7

Maven2一路;有一個名爲m2eclipse的Eclipse插件來幫助管理它,正確地解決了依賴性問題,然後解決了一些問題。有一個free online book as documentation

特別看multi-module projects將許多組件捆綁在一起,讓Maven解決構建順序和依賴關係問題。

還有一個chapter on the Eclipse integration

而這僅僅是Eclipse和Maven的,接下來你會得到一些很酷的東西OSGi的:

從根本上來說,Maven模塊模型完全符合OSGi的捆綁模型。我們已經使用Maven構建並管理了數百個捆綁產品,並且已經使用了3年以上,這非常棒。

0

請您詳細說明問題出在哪裏?你提到OSGi包依賴關係。這是在運行時?或者在編譯期間?在第一種情況下,您應該考慮聲明式服務(請參閱OSGi規範)。

0

我們使用Hudson和PluginBuilder來構建基於Eclipse的OSGi捆綁包/插件。這基於Eclipse的標準PDE流程來構建插件。這意味着使用Eclipse作爲編譯器。

2

借調Maven2。查看Tycho插件的構建 - 他們使用Eclipse的JDT編譯器,因此它在編譯時實現所有OSGi規則,這與Eclipse在運行時的相同方式。

或者,Apache Felix BND插件也很流行。我更喜歡Tycho,因爲它更接近於統一Maven和Eclipse開發環境。

1

PDE無頭構建。 Eclipse有很好的文檔。如果你正在構建Eclipse插件,並且你想通過命令行來完成,那麼Eclipse PDE無頭版本就是最好的選擇。

0

的Maven不需要互聯網連接!爲了基督的緣故,使用-o開關。