問題
最近公司需要在Maven私服上部署一個共享項目割择,作為一個公共Jar包的項目。
而項目會經(jīng)常修改冒萄,每次修改都是用一個版本號1.0.0-RELEASE,
并且通過mvn deploy 發(fā)布 版本上去MAVEN私服臊岸。
但發(fā)現(xiàn)引用這個版本的其他項目每次mvn 編譯的時候總是獲取不到最新改動。
原因
MAVEN 有RELEASE版本 跟 SNAPSHOT版本機制:
RELEASE版本機制
先檢查本地倉庫是否有依賴的包尊流,如果沒有就去中央倉庫或遠程私有倉庫進行下載帅戒。如果本地倉庫已經(jīng)有的話,不論遠程私有倉庫(MAVEN私服)是否有更新都不進行下載崖技,除非把本地倉庫的文件刪除掉逻住。(即使在編譯的時候加參數(shù)-U也沒效果)SNAPSHOT版本機制:
可以先參考一下這個文章:
https://www.cnblogs.com/EasonJim/p/6852840.html
文章里提到執(zhí)行命令的時候增加 -U就可以強制更新SNAPSHOT版本的依賴:
mvn clean compile -U
## 這個-U 參數(shù),本人親自測試過响疚,只對SNAPSHOT版本有效
但實際情況是鄙信,有開發(fā)人員是不懂這個東西,所以就不得不考慮使用默認(rèn)方式去強制更新忿晕。
解決方法
后來找到在倉庫配置里增加一個更新策略的配置updatePolicy装诡,在項目POM文件里增加倉庫,并且配置倉庫的updatePolicy為always就可以了:
<repositories>
<repository>
<id>nexus-public</id>
<name>nexus-release</name>
<url>http://XXXXXXX/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>