簡體   English   中英

如何為離線構建自動更新本地 Maven 存儲庫 .m2 文件夾

[英]How to auto-update local maven repository .m2 folder for offline build

我正在處理一個有很多依賴項的大型項目,其中許多是 SNAPSHOT 依賴項。 並且由於快照依賴關系,構建需要大量時間(大約一個小時),因為對於每個依賴項,它需要檢查它是否在遠程工件中更新,即使快照版本沒有更改。 對於發布版本,沒有問題,因為只有在版本更新時才檢查遠程,否則使用 .m2 中的本地可用 jar。

與上述場景相比,如果我在本地 .m2 中擁有所有可用依賴項時使用 -o 標志進行離線構建,則構建只需要大約 5-10 分鍾,這節省了大約 40-45 分鍾的構建時間。 但是由於項目很大而且有很多人在做,所以每當我拉更改時,可能會有一些代碼更改需要最新的快照和離線構建中斷,因為即使是單個不匹配也可能導致構建中斷。

因此,為了解決這個問題,我正在考慮以下方法: 1. 始終使用 -o 標志離線構建。 2. 創建一些外部腳本(可能在 nodejs 中),如果 pom 中給出的依賴項在遠程工件上更新,它將定期保持掃描。 如果是,拉入本地.m2,否則什么都不做。

有沒有更好的選擇呢? 此外,一旦我確定要更新哪個工件,我可以使用什么方法強制更新該特定工件而沒有傳遞依賴關系? 使用上述方法,如果任何傳遞依賴項發生更改,仍然有可能導致構建中斷,但這不會經常發生,在這種情況下我將不得不運行完整的在線構建。

我考慮過設置本地代理工件服務器,但在這種情況下它無濟於事,因為對於快照解析,它無論如何都會轉到遠程存儲庫。 如果我將緩存時間保持更長的時間,則有可能再次丟失更改和構建中斷。

您可以控制快照檢查:

下載政策

updatePolicy String 下載更新的頻率 - 可以是“always”、“daily”(默認)、“interval:XXX”(以分鍾為單位)或“never”(僅當它在本地不存在時)。

https://maven.apache.org/ref/3.6.3/maven-settings/settings.html#class_snapshots

但您可能還有其他問題,因為在下載工件上浪費了 45 分鍾的構建時間。

暫無
暫無

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

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