2014-09-22 864 views
14

下面是結果MVN -version:Maven的強制更新快照依賴

Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800) 
Maven home: /usr/share/maven 
Java version: 1.7.0_67, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac" 

假設我有一個快照依賴:

<dependency> 
    <groupId>org.puzzled</groupId> 
    <artifactId>foo</artifactId> 
    <version>1.0.4-SNAPSHOT</version> 
</dependency> 

我有快照的下載副本在我的本地回購。但其他開發人員已經做出了改進,並且對foo-1.0.4-SNAPSHOT.jar進行了更新。我想發佈Maven執行命令,通過從遠程存儲庫下載它來更新該依賴項。

根據應對this和許多其他問題,如果我做

mvn clean -U package 

它應該只是(重新)下載所有的依賴關係。對?那不會發生什麼。它下載用於快照依賴關係的元數據,推斷(並且錯誤地),不需要更新。我必須刪除Maven的本地.m2存儲庫中的相關子目錄,以便使用-U標誌更新遠程回購的快照版本。

這是一個錯誤,還是我錯過了什麼?

+0

我從來沒有與maven 3.0.3的這個問題,但開始得到它在3.2.3就像你所描述的。 :-( – dpetruha 2014-11-25 22:07:02

+0

只是爲了檢查,你可能想至少嘗試複製你的本地.m2文件夾以保存其他地方並清除.m2目錄,然後嘗試運行全新安裝並查看它是否抓取依賴項。只會檢查以確保您的設置實際上是正確的,並且您正在爲工件提供正確的服務器,以防當前將所有依賴項緩存到本地。 – eisbaer 2016-10-11 18:38:35

+0

[Force maven update](http:// stackoverflow。com/questions/4701532/force-maven-update) – jordiburgos 2016-11-19 10:50:15

回答

-1
mvn clean install -U 

-U表示強制更新相關性。

0

元數據很可能在您下載工件的Nexus或您的本地存儲庫中損壞。

如果Nexus是你的,我會重建元數據。

0

存儲庫是否可能使用非唯一的SNAPSHOT名稱發佈foo

這個blog entry很好地解釋了獨特和非獨特的SNAPSHOT神器之間的區別。

實質上,如果工件元數據出現在連接點作爲foo-1.0.4-SNAPSHOT.jar它是非唯一的。如果它顯示爲foo-1.0.4-20160122.172609-36.jar,它是唯一的。

你可以只有在Maven 3中發佈獨特的快照構件,但仍然可以解決舊的時間戳非唯一性快照......但它很可能。看看ancient doc,似乎在文件系統日期和本地和遠程機器上的metadata.xml之間存在一些模糊不清的交互。基本上:(1)嘗試確保您的SNAPSHOT依賴項具有唯一的工件,並且(2)如果它們不是,則不依賴於檢測到新的SNAPSHOTs。使用mvn dependency:purge-local-repository與適當的包括從您的本地M2,而不是舊的SNAPSHOTs。