介紹一下背景,項目要遷移進坑人的離線的內網開發,將在同事那編譯經過的代碼和maven倉庫拷進內網,打算編譯經過以後再上傳私服,結果配好maven以後,本地庫中的部分jar包顯示沒有引入,以下面的波浪線java
想到多是idea提示的不正確,直接編譯吧,結果編譯失敗,主要錯誤信息以下redis
[ERROR] Failed to execute goal on project zeus-common-redis: Could not resolve dependencies for project com.hsjry:zeus-common-redis:jar:1.0.0-SNAPSHOT: Cannot access hundsun-nexus (http://10.253.40.200:6060/nexus/content/groups/public) in offline mode and the artifact redis.clients:jedis:jar:2.9.0 has not been downloaded from it before. -> [Help 1]windows
查看本地倉庫,是存在該jar包的maven
問題出在目錄中的多餘文件,它們主要包含下載未成功的文件(.lastUpdated),遠程倉庫的配置信息(_remote.repositories),每次在更新maven項目的時候,每個jar包路徑下的_remote.repositories文件都會同setting.xml中設置的倉庫地址id進行判斷,若是沒有匹配,會自動更新該jar包的相關文件,若是未聯網則會出現jar沒法發現的錯誤,致使即便jar存在,maven項目也沒法使用該jar的狀況。同時因爲未聯網,當下載失敗,會生成後綴爲.lastUpdated的文件。若是使用公司的內網倉庫,_remote.repositories文件變爲_maven.repositories。ide
刪除整個倉庫的後綴爲.repositories,.lastUpdated的文件,同時爲保險,我也刪除了校驗文件(.sha1後綴),idea中刪除整個項目(root項目)的依賴,從新引入以後,問題解決。idea
刪除後綴爲.lastUpdated的文件腳本spa
windows下:delLastUpdated.bat3d
@echo off rem create by NettQun rem 這裏寫你的倉庫路徑 set REPOSITORY_PATH=E:\java12\ProgRepository\zeusRepository rem 正在搜索... for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do ( echo %%i del /s /q "%%i" ) rem 搜索完畢 pause