2012-09-02 54 views
2

我想創建一個基於Eclipse的安裝程序,其中Eclipse項目是基於Maven的。因此無論是否使用Eclipse,它都應該適用於Maven。如何使用Maven的Eclipse p2存儲庫?

我對各種Eclipse項目庫有依賴關係,需要添加更多。我想使用p2存儲庫,並且設法將一個Eclipse EMF庫並將其變成以下示例中的一個jar:Use dependencies from Eclipse p2 repository in a regular Maven build?

問題是,我無法找到簡化流程的方法。我需要從上面給出的問題手動安裝重新打包的依賴項到本地Maven存儲庫,以便我可以在其他項目中引用該依賴項。我想無縫集成來自p2存儲庫的artefact到我的基於Maven的設置。 m4e看起來不像我正在尋找的順利解決方案:理想情況下,我想分發一組目錄,它將響應一個簡單的mvn clean install來執行所有操作:從p2 repo中提取庫,從Maven存儲庫中提取其他庫

這是可以通過Maven和Tycho集成嗎?

更新:首先,澄清問題:只能參考P2存儲庫並不能幫助您從其他項目中使用此引用的場景。從P2存儲庫引用的庫(或多個庫)必須重新打包爲一個jar文件,以便其他Maven項目可以引用它。引用的問題是包裝。但是,它並未解釋如何從其他項目中使用此重新打包的輸出(程序集)。在我的情況下,這反而是從一個聚合的POM中引用程序集,並且爲所有想要使用帶有P2存儲庫起源的庫的項目繼承POM的形式。

+0

根據你自己的回答,似乎我完全不理解你的問題。你是否試圖避免從p2工件到Maven工件的手動轉換(如鏈接問題所述)? – oberlies

+0

可能是我的壞:)是的,我試圖避免下載jar,然後通過發佈mvn命令將它們添加到本地存儲庫。通過在引用的問題中創建項目,並聲明對此項目的重新包裝結果(來自其他項目)的依賴關係,我可以自動執行此操作。 – mahonya

+0

因此,如果您對[參考問題](http://stackoverflow.com/q/6682028/1523648)的解決方案感到滿意,那麼您還有什麼額外的問題? 「我如何從其他Maven項目中引用由Maven構建的JAR」? – oberlies

回答

1

的解決方案是創建一個多模塊的設置與Maven,並宣佈對EMF庫重新包裝的輸出依賴(從我所引用的問題),所有項目的父POM具有這樣的:

<dependencies> 
    <dependency> 
     <groupId>com.mymodule</groupId> 
     <artifactId>myartifact</artifactId> 
     <version>0.0.1</version> 
     <classifier>repackaged</classifier>     
    </dependency> 
    </dependencies> 
     <modules> 
      <module>../mymodule</module> 
    </modules> 

它允許所有以父母模塊爲單位的模塊訪問重新打包的P2工件。

4

Tycho項目可以從p2存儲庫和Maven存儲庫中獲取它們的依賴關係(請參閱此related answer)。即使您不打算構建OSGi運行時,這也可能成爲您的解決方案:大多數OSGi捆綁包在類路徑中也可以作爲「普通」JAR。

限制:從Maven存儲庫引用的工件也必須是OSGi捆綁包,以便Tycho認爲它們用於依賴關係解析。如果不是這種情況(和你無法找到替代它們是OSGi包),你可以第谷的依賴分辨率與普通的Maven插件組合:第谷的包裝類型的

  • 使用一個(如(例如:feature.xml
  • 此外,在您的POM中配置普通的Maven目標。 Tycho在運行時將OSGi/p2依賴關係注入到Maven模型中,因此例如maven-compiler-plugin:compile調用將會看到Maven依賴關係和p2依賴關係。
+0

這不是我想要做的。我正在使用來自Eclipse生態系統的庫,它可以作爲獨立的罐子使用。例如EMF罐子。我試圖避免將我的整個項目拖入OSGI。我提到的問題(和答案)是這樣做的。我找到了解決方案,會立即寫下來。 – mahonya

+0

@sarikan:第二種選擇不需要構建OSGi工件。 – oberlies