簡體   English   中英

Maven和Nexus處理SNAPSHOT依賴項

[英]Maven & Nexus handling SNAPSHOT dependencies

我的項目有10個左右可重用的組件,每個組件都在各自的存儲庫中,分別進行版本控制,但彼此依賴。

現在,每個組件都有它們自己的關系SNAPSHOT存儲庫和一個自定義的nexus組,用於夜間構建,因此我可以確保組件的夜間構建僅包括3rd party及其所需的其他組件。 具體來說,該組將沒有組件自己的快照存儲庫。 這樣,我可以檢測到何時刪除了一個罐子,但是卻忘了清理它上的pom依賴項。 構建將中斷,而不是默默地成功,因為它找到了一個舊的SNAPSHOT jar。

但是,從管理的角度來看,這是一個巨大的痛苦,而且從我對公共關系存儲庫(以及聲納類型書)的了解來看,這是為團隊或組織使用單個存儲庫,而不是按每個組件。

有沒有更好的方法來解決這個問題? 有沒有一種方法可以在組件pom中安裝一個黑名單列表,這樣它就不會嘗試下載某些工件/組ID組合?

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)
      ..

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

在連結中使用不同的SNAPSHOT儲存庫沒有意義,因為每個組件都應具有groupId / artifactId / version坐標,因此您可以使用單個SNAPSHOT儲存庫,否則將對您有經驗的儲存庫造成維護麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM