最近在學習springboot,從網上找了一些demo工程在本地練習,連續兩次在保存pom.xml文件時出現了maven異常,導致相關依賴的jar沒有下載到本地maven倉庫,而且工程編譯不過去,相關異常信息有:
Failure to transfer org.apache.maven:maven-plugin-api:jar:2.2.1 from http://localhost:8081/nexus/content/groups/public/ was cached in the local repository,
resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact
org.apache.maven:maven-plugin-api:jar:2.2.1 from/to central (http://localhost:8081/nexus/content/groups/public/): Connection refused: connect
或者是這樣的:
Project build error: Non-resolvable parent POM for com.autogeneral:spring-boot-hello:0.0.1-SNAPSHOT: Failure to transfer org.springframework.boot:spring-boot-starter-
parent:pom:1.4.1.RELEASE from http://localhost:8081/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update
interval of central has elapsed or updates are forced. Original error: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:1.4.1.RELEASE
from/to central (http://localhost:8081/nexus/content/groups/public/): Connection refused: connect and 'parent.relativePath' points at wrong local POM
看了異常信息發現原來是由於自己在本地用Nexus搭建了Maven私服,而且私服沒有啟動,這時更新pom.xml文件,maven更新下載jar包需要去連接私服,但是連接不上所以報錯。
把本地私服啟動后,再去通過eclipse的maven插件去更新項目依賴,發現問題依舊!這就很痛苦了,看了maven不夠智能啊!好在有萬能的互聯網以及廣大的熱心群眾,終於找到了解決方案,參考的網頁:https://zhidao.baidu.com/question/2202315838117162828.html 這個網頁中提到了 XXX.lastUpdated文件,這個給了我啟發,再一次去看上面的異常信息,根據異常信息中提示的出錯jar包,去本地maven倉庫中找到jar包的目錄,
然后刪除目錄下的 XXX.lastUpdated文件,這時再去更新項目依賴,發現仍然報錯,但是令人欣慰的是報錯信息發生了變化,提示另外一個jar包異常,依舊按照上面的方法去找到目錄,刪除目錄下的XXX.lastUpdated文件。如此反復了多次,直到把所有存在問題的jar包都解決了,最終maven不再報錯,項目編譯通過。
第二次遇到這種問題時不再這么辛苦的去逐個刪.lastUpdated文件了,而是在本地maven倉庫路徑下搜索*.lastUpdated文件,然后將搜出來的全刪掉,一把就搞定了!看了這種文件是個不詳之物啊。
我的問題是由於本地私服沒啟動導致的,后面嫌麻煩(自己每次都忘了啟私服),干脆在maven配置文件中取消了私服。大家在使用maven過程中如果因為網絡連接等問題導致jar包更新出現類似上面的異常,可以參照我的經歷,刪除所有*.lastUpdated文件試試。