簡體   English   中英

使用Maven時如何自動將SNAPSHOT依賴項更新為最新發布的版本

[英]How do I automate the update of SNAPSHOT dependencies to the latest released versions when using maven

我正在嘗試為我們的項目定義發布過程。

我能夠使用Maven發布插件來完成發布,但是我必須手動將所有內部SNAPSHOT依賴項更新為准備之前的發布版本,然后在發布后再次返回到SNAPSHOT版本。

我使用了maven版本插件,它檢測到我的公司依賴項(即SNAPSHOT構建)並列出了要使用的正確發行版。

我嘗試了maven版本插件,准備了目標,並抱怨依賴項中的SNAPSHOT版本。

有沒有辦法發布將SNAPSHOT依賴關系更新為最新發行版本,然后在發行后又恢復為SNAPSHOT版本的發行方式? 或者,也許這不是您應該在發行版和SNAPSHOTS中使用Maven的方式。

當您使用Maven創建一個Realease時:它必須是確定的。 即,一旦創建它就不能再更改(即,源不能更改,依賴項也不能更改)。

因此,當您創建依賴於moduleB的moduleA和moduleA的發行版時。 在釋放模塊A之前必須釋放模塊B,並且模塊A必須取決於模塊B的發行版本。

重要的一件事是您不應該回到SNAPSHOT版本。 至少據我理解,這意味着:

  • 創建moduleB-1.0.0版本
  • 更改對模塊B-1.0.0的依賴
  • 創建moduleA-1.0.0版本
  • 然后將依賴項更改回moduleB-1.0.0-SNAPSHOT

必須明確的是,一旦存在moduleB-1.0.0(即,已發布):工件模塊B-1.0.0-SNAPSHOT不應再使用。

而不是返回到SNAPSHOT,應該將依賴關系更新到下一個SNAPSHOT版本 (例如moduleB-SNAPSHOT-1.0.1)。

話雖這么說,要釋放依賴於許多SNAPSHOT工件的模塊並非易事,因為必須先釋放所有依賴關系,然后才能釋放您的主要工件。

在大多數情況下,我們所擁有的是一個主要工件,這取決於具有相同版本控制策略的許多其他工件(我們稱它們為公司模塊)。 因此,您可以在一個地方定義一個屬性corporate-module-version ,其中包含許多依賴項使用的版本。

發布過程如下:

  • 釋放版本號為1.0.0的每個快照依賴項(使用maven-release-plugin:在此步驟之后,SCM中企業模塊的所有pom.xml都為1.0.1-SNAPSHOT)(請參閱本文末尾的重要說明)以促進這一步驟)
  • 在主工件中手動corporate-module-version屬性更改為“ 1.0.0”(以便所有SNAPSHOT依賴項都由剛剛發布的版本替換)
  • 提交保存了corporate-module-version的修改后的pom.xml
  • 使用maven-release-plugin:釋放主要工件(然后,SCM中的新版本將類似於1.0.1-SNAPSHOT)
  • 在主工件中手動corporate-module-version屬性更改為“ 1.0.1-SNAPSHOT”(以便所有依賴項都被最新的快照版本替換)

重要說明 :必須有一個包含所有公司模塊的多模塊父項目,才能立即釋放所有公司模塊。 為了使maven-release-plugin和多模塊父項目沒有太多麻煩,請確保將父pom.xml放在子pom.xml的上方(這是maven的設計建議,但不幸的是,有時,eclipse用戶不遵循它,因為eclipse不喜歡分層項目)

暫無
暫無

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

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