2012-11-07 85 views
11

過去,我們在文件系統上安裝了軟件包和功能部件,並通過具有'Directory'位置的目標定義文件在Eclipse中提供它們。這樣,通過Eclipse中的導出嚮導很容易使用它們。如何在Tycho內部版本中使用包含第三方軟件包的目錄

現在我正在嘗試與Tycho建立一個eclipse-plugin,它具有第三方依賴關係,例如, javax.vecmath and org.apache.commons.math

據我所知,在Tycho構建中獲得依賴關係的最好方法是通過p2存儲庫。所以我使用了一個Eclipse套件。但對於我的第三方軟件包,似乎沒有可用的p2存儲庫。

所以我的問題是:我如何輕鬆地將JAR(vecmath,commons-math)獲取到p2存儲庫中?

我以爲我可以用Tycho構建一個p2存儲庫,但是當我無法訪問Tycho中的第三方包時如何做到這一點?我嘗試使用目標定義,但Tycho僅支持到p2存儲庫的鏈接,而不支持目錄或安裝。那麼在Maven/Tycho構建中使用我的第三方依賴關係還有其他方法嗎?

回答

0

根據你的問題,第三方依賴關係已經捆綁。這是好的–所有剩下要做的就是爲捆綁生成p2元數據。

這可以通過Features and Bundles Publisher application輕鬆完成。結果是一個p2存儲庫。顯然,您不希望所有的開發人員都必須在本地執行此操作才能運行Tycho構建,因此您應該將發佈應用程序的結果放到Web服務器上。然後,通過您的項目的目標文件中的http URL引用這些軟件包。

+0

這是最簡單和最快的方式,創建一個p2回購。謝謝大家。 – Timo

+4

我不同意。您必須手動生成網站,如果罐子不是捆綁包,則必須自己「捆綁」它們。所有這一切都是平凡的,繁瑣的,並且可以使用p2-maven-plugin(下面會提到)輕鬆實現自動化。我是p2-maven-plugin的作者,我編碼它只是因爲我發現使用「Features and Bundles Publisher Application」非常麻煩。 嘗試p2-maven-plugin,你會發現它比其他任何東西都容易:https://github.com/reficio/p2-maven-plugin –

+0

是的,我同意p2-maven-plugin看起來像是最好的解決方案。處理Eclipse/RCP項目中的第三方依賴關係確實非常痛苦。看起來p2-maven-plugin可以顯着減少這種痛苦,只需在某個地方維護一個列表並從CI構建發佈一個p2更新站點,以便我們可以在所有tycho構建中使用它。 – Kris

11

一些不同的選擇......

P2插件

使用p2-maven-plugin來包裝你的所有非OSGi的依賴成束,並創建一個P2存儲庫。

我還沒有嘗試過p2-maven-plugin(當我設置當前項目時它不存在)。它的實現基於tycho,但您可能會發現它提供了一種更方便的方式來解決您的問題,而不僅僅是自己的tycho插件。

捆綁插件

使用maven-bundle-plugin包裝您的非OSGi的依賴關係(每個依賴一個包裝POM),並將其安裝到您的存儲庫。我認爲commons-math已經是一個依賴,所以你可能只需要包裝vecmath。然後,您可以在基於tycho的pom文件的<dependencies>中列出這些依賴關係。

這種方法的優點是您不需要建立一個p2存儲庫來構建您的項目。缺點是管理捆綁項目中的依賴不再僅僅是修改MANIFEST.MF文件的情況:您可能還需要更新pom。

捆綁插件和第谷

如果使用捆綁插件的方法來包裝你的依賴到OSGi包,它可能仍然是建立對那些依賴關係的P2存儲庫反正是有用的,因爲這樣簡化在Eclipse PDE中設置目標平臺。

要做到這一點,您可以創建一個新的基於tycho的項目來收集p2存儲庫中的依賴項:也就是說,已經綁定的依賴項以及非OSGi依賴項的已打包版本。這樣,創建p2存儲庫的項目會在其pom中列出包裝的依賴項,並且您的捆綁項目可以使用p2存儲庫而不會在其poms中列出任何依賴項。

這是我正在使用的方法。具體而言,我使用eclipse-feature項目來定義基地功能,其中包括所有第三方依賴項。我還在包裝插件上設置了<deployableFeature>配置選項,其設置爲true,這將在目標目錄中創建一個p2存儲庫。這個特性可以安裝到我通常的Eclipse實例中,這使得使用當前的Eclipse平臺作爲目標平臺很容易。它也可以用作可用於tycho構建中其他地方(即通過我的代碼)使用的p2存儲庫,或作爲Eclipse .target文件中的存儲庫。

eclipse-feature似乎是Tycho 0.13.0中最好的包裝類型。在更新的版本中可能會有更合適的包裝類型。

+0

這個答案寧可回答這個問題:http://stackoverflow.com/q/29664505/1523648 – oberlies

1

一個很好的地方去尋找第三方捆綁罐子在P2回購是日食軌道

http://download.eclipse.org/tools/orbit/downloads/

commons.math就在那裏。

如果第三方OSGi包是不是在P2回購可用,但在行家回購如

http://search.maven.org/

你可以使用第谷的pomDependency =考慮開關:

http://wiki.eclipse.org/Tycho/How_Tos/Dependency_on_pom-first_artifacts

+0

我幾分鐘前就發現了軌道,真的很方便。其他建議看起來很有趣,謝謝。 – Timo

相關問題