maven加載依賴報錯的原因分析及解決方法
一、問題描述:maven加載依賴報錯
點擊刷新,加載所有maven項目的時候,maven加載依賴失敗。
顯示“無法解析mysql:mysql-connector-java:pom:8.0.27”,具體報錯原因如下:
mysql:mysql-connector-java:pom:8.0.27 failed to transfer from https://maven.aliyun.com/repository/public during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of nexus has elapsed or updates are forced. Original error: Could not transfer artifact mysql:mysql-connector-java:pom:8.0.27 from/to nexus (https://maven.aliyun.com/repository/public): transfer failed for https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.pom
嘗試使用 -U 標記(強制更新快照)運行 Maven 導入
二、原因分析&&解決方法
mysql:mysql-connector-java:pom:8.0.27 failed to transfer from https://maven.aliyun.com/repository/public during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of nexus has elapsed or updates are forced. Original error: Could not transfer artifact mysql:mysql-connector-java:pom:8.0.27 from/to nexus (https://maven.aliyun.com/repository/public): transfer failed for https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.pom
將上述報錯信息進行翻譯:
Mysql: Mysql -connector-java:pom:8.0.27在前一次嘗試中從https://maven.aliyun.com/repository/public傳輸失敗。此失敗緩存在本地存儲庫中,直到nexus的更新間隔已過或強制更新,才會重新嘗試解析。原來的錯誤:無法傳輸工件mysql:mysql-connector-java:pom:8.0.27從/到nexus (https://maven.aliyun.com/repository/public):傳輸失敗https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.pom
即此失敗緩存在本地儲存庫中,直到nexus的更新間隔已過或強制更新,才會重新嘗試解析。
1. 刪除本地倉庫中下載失敗緩存的依賴
進入maven倉庫中該依賴包的緩存文件夾,將里面的文件全部刪除。
注:當我們拉取jar包失敗的時候,本地庫就會生成lastUpdated 文件。 拉取成功的使用可以在本地倉庫中查看到jar包。
2. 然后將項目進行clean、compile、package、install
注:
1、package 命令執(zhí)行時,會先從遠程倉庫下載最新 jar 包,在 reimport 無效時,可起到代替 reimport 的效果;
2、同理,使用 maven install 也可,但生成的 jar 包會同時到本地倉庫;使用 maven deploy 也可,但生成的 jar 包會同時到遠程倉庫;
3、建議使用 package 命令,生成的 jar 包只保存在項目文件夾中,不影響倉庫 jar 包;且更新完成之后,可執(zhí)行 maven clean 命令清理掉剛才生成的 jar 包。
3. 重新加載maven
重新加載maven后,改依賴項還是報錯,報錯如下:
the trustAnchors parameter must be non-empty
翻譯:trustAnchors參數(shù)必須非空
4. 在IDEA的Setting的Maven配置的VM options添加如下代碼:
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
由于使用了HTTPS,存在著SSL證書驗證的問題,因此需要在IDEA中添加配置來忽略SSL證書的驗證。
上述代碼的作用是忽略SSL證書檢查,下面的Importing是指導入依賴時忽略SSL證書檢查,Runner是指運行Maven插件或目標時忽略SSL證書檢查。
然后把倉庫里緩存失敗的文件刪除,再刷新maven,依賴即可下載成功!
5. 一鍵用腳本刪除maven倉庫里所有的lastUpdated文件,然后刷新maven
一個一個刪除maven倉庫里下載失敗的緩存文件太慢了,直接用腳本刪除maven倉庫里所有的lastUpdated文件。操作方法如下:
新建一個文件把名稱后綴名改為clean.bat
@echo off rem create by NettQun rem 倉庫路徑 set REPOSITORY_PATH=D:\maven\apache-maven-3.8.4\repository rem 搜索中 for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do ( echo %%i del /s /q "%%i" ) rem 搜索完畢 pause
將上面的D:\maven\apache-maven-3.8.4\repository 改成你自己的倉庫地址,保存退出,退出后雙擊運行即可。然后刷新maven,所有依賴都下載成功了!
三、另一種解決方法
1. 直接在Maven中央倉庫搜索我們需要的jar包
Maven中央倉庫地址:https://mvnrepository.com/
如我的不能被Maven識別的jar包:org.apache.zookeeper:zookeeper:pom:3.4.6
2. 點擊需要的jar包名稱進入版本庫,下載對應版本
需要哪個版本,就點擊對應版本
點擊對應版本的包進入如下界面,點擊pom/jar下載文件。
下載好后把這個文件復制到maven倉庫中對應的目錄下。
然后刷新maven,或者重啟idea。
總結
到此這篇關于maven加載依賴報錯的原因分析及解決方法的文章就介紹到這了,更多相關maven加載依賴報錯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Resty開發(fā)restful版本的Jfinal深入研究
這篇文章主要為大家介紹了Resty開發(fā)restful版本的Jfinal深入研究有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03Java使用JDBC向MySQL數(shù)據(jù)庫批次插入10W條數(shù)據(jù)(測試效率)
使用JDBC連接MySQL數(shù)據(jù)庫進行數(shù)據(jù)插入的時候,特別是大批量數(shù)據(jù)連續(xù)插入(100000),如何提高效率呢?今天小編通過本教程給大家介紹下2016-12-12Java開發(fā)之內部類對象的創(chuàng)建及hook機制分析
這篇文章主要介紹了Java開發(fā)之內部類對象的創(chuàng)建及hook機制,結合實例形式分析了java基于hook機制內部類對象的創(chuàng)建與使用,需要的朋友可以參考下2018-01-01java配置多個過濾器優(yōu)先級以及幾個常用過濾器操作
這篇文章主要介紹了java配置多個過濾器優(yōu)先級以及幾個常用過濾器的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結
在使用java的集合類遍歷數(shù)據(jù)的時候,在某些情況下可能需要對某些數(shù)據(jù)進行刪除,下面這篇文章主要給大家介紹了關于java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結,需要的朋友可以參考下2023-10-10詳解Java中的線程讓步y(tǒng)ield()與線程休眠sleep()方法
Java中的線程讓步會讓線程讓出優(yōu)先級,而休眠則會讓線程進入阻塞狀態(tài)等待被喚醒,這里我們對比線程等待的wait()方法,來詳解Java中的線程讓步y(tǒng)ield()與線程休眠sleep()方法2016-07-07