前言
在使用Maven私服Sonatype Nexus的時候,經常會出現依賴包找不到的問題.
此時通過瀏覽器去私服頁面查看,發現依賴包坐標是存在的,對應的文件(比如jar文件).
或者私服上面也找不到文件,但是引入的中央倉庫或者其他公服上面有文件.
@Author duangr
@Website http://my.oschina.net/duangr/blog/182134
1.問題描述
在通過pom.xml中的依賴坐標,從私服下載依賴包時,往往會遇到如下的類似問題:
The container 'Maven Dependencies' references non existing library 'E:\Maven\repo\org\apache\hadoop\hadoop-yarn-api\2.0.0-cdh4.5.0\hadoop-yarn-api-2.0.0-cdh4.5.0.jar'
2.解決方案
上面問題往往是在下載依賴過程中網絡出現問題導致的.
此時我們本機已經開始下載依賴代碼,但是下載失敗,本機倉庫中會在${MAVEN_repo}/${groupid}/${artifactid}/${version} 路徑下面生成 *.lastUpdated 的文件.
*.lastUpdated實在可惡,下次再下載時由於它的存在Maven不會再去私服中下載
2.1 解決方法:(針對PC與Maven私服之間網絡傳輸問題)
-
打開本地倉庫所在目錄, 通過win文件夾的搜索功能,查找 *.lastUpdated ,然后將找到的文件全部刪除
-
重新 Maven Update Project,
-
若在eclipse中操作時勾選上 Force Update of Snapshots / Releases
-
若在命令行操作時增加 -U 參數
一般情況下上面方法即可解決問題. 若問題依然存在,請確認下主機與Maven私服之間網絡是否暢通.可以通過在瀏覽器中打開私服地址確認.
若本機與私服之前網絡暢通,那這個問題可能是由於私服與中央倉庫(或者其他第三方倉庫)之間下載依賴時網絡故障導致的.
2.2 解決方法:(針對私服與中央倉庫或第三方倉庫之間網絡傳輸問題)
-
使用管理員登陸私服頁面(Sonatype Nexus)
-
在倉庫的瀏覽頁面找到下載失敗的包, 右鍵菜單 "Update Index", 右鍵菜單 "Expire Cache"
-
按照PC與私服之間網絡問題的解決步驟處理一遍