我剛剛完成將我們的一個內部框架項目從ant轉換爲maven。 Maven構建運行正常,並且沒有問題地部署到我們的存儲庫。如何設置maven框架頂級pom
問題是當其他項目嘗試使用框架時,它不起作用。唯一下載的是頂級框架pom。
我已經嘗試將一些依賴項添加到一個或多個各種模塊,但無論我添加哪一個,我都會得到一個循環依賴錯誤。我也嘗試創建一個沒有模塊和一些依賴項的第二個頂級pom文件來覆蓋存儲庫管理器中的一個。這會導致一些依賴被下載,但是隨後maven的構建會隨機掛起。基於Windows任務管理器,它看起來像一個無限循環。所以第二個pom文件似乎不是答案(或者我做錯了)。
我的框架POM文件看起來是這樣的:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>framework_snt</groupId>
<artifactId>SFP</artifactId>
<packaging>pom</packaging>
<name>SFP framework</name>
<version>6.3</version>
<modules>
.... 50+ modules here
</modules>
,然後通常屬性,相關的管理和pluginManagement條目頂級POM。
消費模塊中我只是有以下幾點:
<dependency>
<groupId>framework_snt</groupId>
<artifactId>SFP</artifactId>
<version>6.3</version>
<type>pom</type>
</dependency>
這是在頂層POM因此,所有子模塊可以訪問框架庫,這使得它的開發者更加容易。
如何進行設置以便所有相關的jar文件將由我的消費項目下載?
是的,這是一種完成任務的方式,但是在轉換我們現有的ant構建時,每個人都習慣於包含「框架」,並且始終可以使用所有50個jar文件。 – Jon 2012-01-19 18:54:29
我看到,你可以嘗試讓一個子模塊(稱爲「framework-all」或其他)聲明所有其他子模塊的依賴關係。然後你的開發人員應該能夠聲明對這個子模塊的依賴,並且maven將會把其他的依賴作爲傳遞依賴。 – BenjaminLinus 2012-01-19 20:38:24
我最終在這個上使用了一個變體。我保留頂級聚合器pom用於構建和部署。但GAV與應用程序使用的不一樣。然後我在一個新文件夾中創建了一個新的pom。這一個包含應用程序的「正確」GAV,並且沒有模塊,只有依賴關係。這到目前爲止有效 – Jon 2012-02-06 19:33:12