1. 場景描述
maven庫用的是公司私服和阿里雲結合的方式(maven多倉庫配置),本項目maven依賴的有其他項目組的jar包(單點登錄),但是天有不測風雲,依賴單點登錄的好幾個jar包,在編譯(build)的時候一直Downloading,卡死了。
2. 解決方案
2.1 問題定位
以前好好的,突然不行了,首先肯定先找jar包提供方,然而單點登錄項目組回復N久沒動了,看了maven庫jar包是沒變化,里面的日期也沒變化,但是幾個同事都不能更新了,肯定是私服上的jar包有變化了,看了下私服上md5、sha1這些好像變化了。。但是也不確定,也不好說,還是看看怎么解決吧。
2.2 解決方案
問題原因是服務器配置文件跟本地文件進行對比(maven-metadata.xml),通過里面的時間戳進行對比,本地日期大於等於服務器jar包日期,不更新jar包;服務器日期大於本地庫日期,更新jar包,問題就出在maven-metadata這個問題文件上了。
兩個解決方案
2.2.1 更改setting文件。
本人maven配置文件在:E:\m2下,打開文件,找到jar包對應的倉庫。
<updatePolicy>always</updatePolicy>
-----------------更改為----------
<updatePolicy>never</updatePolicy>
updatePolicy有三個參數:aways:每次,never:從不,daily:每日,這樣就可以編譯成功了。
2.2.2 重新下載
當Downloading卡住了,首先停止服務,去本地maven倉庫(本人:E:\m2\repository)下面找到該jar包對應文件夾,在文件夾里面會有個lock后綴的文件,就是在比對過程中出問題了,文件鎖住了,刪除了該lock文件,但是測試了下不行,下載還是會有問題,要刪除了整個文件夾,例如“E:\m2\repository\com\oracle\ojdbc6\11.2.0.3,把文件夾11.2.0.3整個給刪除了,重新編譯下載,因為整個文件夾都沒有了,maven編譯的時候就會去下載該jar包,相當於新的下載,不會去比對,這樣就可以直接通過了。
2.2.3 結論
建議采用第二種,原因:
(1)直接,快速,直接把jar包對應的文件夾刪除了,重新下載就好了。
(2)第一種方案會存在問題,假如外圍系統jar包正常更新了,版本沒變化,但是增加了新的方法,這樣就更新不到新的方法了,會有問題。
I’m 「軟件老王」,如果覺得還可以的話,關注下唄,后續更新秒知!歡迎討論區、同名公眾號留言交流!