遇到這么一個問題。有一個Maven項目,在互聯網環境下,下載jar包后,構建是成功的,但將這些下載后的jar文件移到無互聯網的局域網中構建,就會報這個錯。
如圖:
很明顯,如果是互聯網,或者局域網內有nexus私庫的,那么遇到這個問題應該是將庫文件刪了重新構建。但如果是已經完全是使用本地庫,還需要這個問題,那么可以用我發現的這個方法試一試:
根據提示,我在本地庫文件中將maven-metadata-aliyun.xml復制了一份出來,重命名為maven-metadata.xml,構建還是失敗。
偶然的,我執行了如下操作,使構建又能成功了。
前提:在無互聯網的局域網中。
1、首先編輯Maven的settings,將mirror中的互聯網鏡像去掉,換上本地的。比如:
<mirror> <id>central</id> <mirrorOf>*</mirrorOf> <name>central</name> <url>file://D:\\java\\localRepository</url> </mirror>
另外有一個offline參數,我不知道有沒有影響,嘗試以下操作時我是設置為true的。
2、在maven-metadata.xml同目錄結構下有一個resolver-status.properties文件,刪掉它,執行構建。當然這一次還是會失敗,但是resolver-status.properties會被再次生成,查看以下內容,我的里面內容有這么一個文件的描述:maven-metadata-central.xml
3、將原有的maven-metadata-aliyun.xml復制一份,重命名為resolver-status.properties中的文件名,比如我這里就是重命名為maven-metadata-central.xml。
4、再次構建,問題已經解決。
這里要注意的是,第一步里我有一個刪除resolver-status.properties的操作,原因是有時候下載來源不是maven中心庫或者阿里雲庫這么簡單,可能Maven項目的依賴原本就來源於某公司的Nexus的私庫,那么resolver-status.properties中有可能是自定義的私庫地址。刪掉了會重新建立resolver-status.properties,那么缺少的maven-metadata是哪一個,就一目了然了。
遇到這個問題可能是我對Maven了解的不夠深入,具體產生的原因其實我是沒搞清楚的。說不定各位大神有更好的解決辦法(比如禁止Maven每次構建下載metadata.xml等,這我也在網上看到過)。