2013-05-06 152 views
0

我的項目有10個左右的可重用組件,每個組件在其自己的存儲庫中獨立版本化,但互相依賴進行構建。Maven&Nexus處理SNAPSHOT依賴關係

現在,每個組件都有自己的nexus SNAPSHOT存儲庫和用於夜間構建的自定義nexus組,因此我可以確定組件的每晚構建僅包含第三方和其所需的其他組件。具體而言,該組不會擁有組件自己的快照存儲庫。通過這種方式,我可以檢測到一個jar被刪除了,但我忘記清理一個pom依賴它。構建會中斷,而不是默默地成功,因爲它發現了一箇舊的SNAPSHOT jar。

但是從管理的角度來看,這是一個巨大的痛苦,從我看到的關於公共聯繫庫(和sonatype book)的觀點是爲一個團隊或組織建立一個存儲庫,而不是每個組件。

有沒有更好的方法來處理這個問題?有沒有辦法在組件pom中安裝nexus黑名單,以便它不會嘗試下載某些工件/組ID組合?

+0

是否所有這些組件都屬於同一個項目? – khmarbaise 2013-05-06 18:56:14

+0

它們都用於更大的項目,但它們被設計成可重用的庫。我們有多個使用1..n個組件的「項目」(如果您願意的話,頂級項目)。 – Mark 2013-05-06 19:21:20

回答

0

pom中的黑名單是不可能的。我假設你的項目設置是錯誤的。

我會建議爲您的項目創建一個多模塊項目,其中包含所有模塊(可重用組件)。

big-project (pom.xml) 
     +--- module1 (pom.xml) 
     +--- module2 (pom.xml) 
     +--- module3 (pom.xml) 
     +--- module4 (pom.xml) 
     .. 

,這將給你不維護的依賴性,特別是在不同的版本,並具有項目的一致性狀態,因爲你只有所有組件的單一版本一起,一個簡單的解決方案來構建他們在一起的優勢可以看到哪個組件(模塊)與哪些版本的其他組件一起工作。

在您的設置中,真的很難知道哪個版本的哪個組件與特定版本的其他組件一起工作。

除了上面它可以更容易創建集成測試作爲構建更簡單,像這樣的一部分:

big-project (pom.xml) 
     .. 
     +--- it-mod (pom.xml) 
     .. 

此外,您可以使用單獨的模塊(組件)從其他項目也是如此。

的關係採用不同的快照庫沒有意義,引起每一個組件應該有一個的groupId/artifactId的/版本的協調,以便否則,你有一個維護地獄,你有有經驗的版本庫,你可以使用一個快照庫。

+0

不幸的是,這是不可能的。在我們的例子中,moduleX是一個獨立的應用程序......它存在於大項目之外的它自己的應用程序中。我們不希望把它放在同一個maven項目中,因此可以獨立於其他模塊開發它。 – Mark 2013-05-20 03:30:34