我們在內部託管一個簡單的maven倉庫,但maven似乎沒有從中選取新的快照版本。我們的本地倉庫的settings.xml中配置有:maven 3如何確定快照是否已更新?
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
的東西,如「MVN -U」結合這一點,我希望行家如果適用於搭載了最新的快照版本。在我收集的過程中,maven將檢查metadata.xml的最後修改內容,並根據是否更新快照來確定。不過,我不完全清楚最後更新的是哪一個。舉個例子以下metadata.xml中:
<metadata>
<groupId>com.example</groupId>
<artifactId>example-test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<versions>
<version>1.0-SNAPSHOT</version>
</versions>
<snapshot>
<timestamp>20120427.113221</timestamp>
<buildNumber>1335519141810</buildNumber>
</snapshot>
<lastUpdated>20120427113221</lastUpdated>
</versioning>
是否行家使用LASTUPDATED標籤? 「最後修改」的http頭文件? snapshot.timestamp標籤還是其他東西?
無論如何,我們看到的行爲是確實會下載最新的metadata.xml,但在那裏停止,它不會重新下載快照本身。
編輯:我注意到maven 2中可選的唯一快照功能在maven 3中已經成爲強制的。有沒有可能maven根本沒有檢測到更新的版本?從現在的模塊檢查出的maven-metadata.xml中:
<metadata modelVersion="1.1.0">
<groupId>com.example</groupId>
<artifactId>example-test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20120607.154257</timestamp>
<buildNumber>1339076577</buildNumber>
</snapshot>
<lastUpdated>20120607154257</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-20120607.154257-1339076577</value>
<updated>20120607154257</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
是否行家檢查版本號? snapshotVersion的「更新」標籤?
對不起,延遲迴復。我沒有在本地安裝模塊,但從另一個項目判斷,我認爲「maven-metadata-local.xml」在鎖定中很重要?無論如何,我已經刪除了我的Maven回購中的文件夾,並重現了這個問題:第一個Maven動作下載了jar,我更新了repo上的jar(一個新版本不是從我自己的系統推送的)並在我的系統上運行另一個maven命令。結果是隻有元數據文件被更新。 – nablex
它是固定的,但現在諷刺的是它不會鎖定:即使您執行本地安裝,它也會嘗試從回購中獲取最新版本。我現在可以接受這一點。 – nablex