问题背景:
在日常开发的过程中,拉取别人的项目,或者新建项目在pom文件中添加依赖时,很多小伙伴肯定都遇到过如下图所示的依赖下载失败的情况,我也是遇到过很多次了,在这里把解决的方法给总结一下,希望能帮到各位。
原因及解决办法:
配置阿里云镜像
出现这种下载失败的状况一般是网络情况造成的,我们国内访问maven中心仓库速度是比较慢的,可能就会造成下载失败的情况,所以我们一般都是会配置阿里云镜像,在本地 maven 中 conf 文件夹下的 中<mirrors>标签中添加阿里云的镜像:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
即使我们配了阿里云的镜像,依赖可能依旧会下载失败,那么可以尝试以下的解决方法:
手动删除下载失败的依赖
首先我们可以在本地的 repository 仓库中找到下载失败的依赖,例如上面这个失败的依赖就在我磁盘的这个路径下:
D:\repository\org\springframework\boot\spring-boot-starter-security\1.6.0
我们可以看到这里的文件是以 .lastUpdated 结尾的,那这就是下载失败的jar,当这个下载失败的文件存在的时候,reimport 我们的文件,它是不会重新下载这个失败的jar的,所以我们需要手动去删除这些下载失败的文件,然后重新reimport我们的文件,才会重新下载。
此时如果还是下载失败,我们可以尝试切换使用阿里云镜像或者不使用阿里云镜像,没准就下载成功了。
如果觉得手动删除这些下载失败的文件比较麻烦,可以使用下面这个脚本来删除:
@echo off
rem create by sunhao(@)
rem crazy coder
rem 这里写你的仓库路径
set REPOSITORY_PATH=D:\repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause
只需要改成你自己的maven仓库路径,然后粘贴在记事本中把后缀改成 .bat 双击运行就能把失败的jar给删除掉,删除掉之后就可以重新下载了,点击红色箭头处即可重新下载
执行修复不完整依赖命令
如果你发现你的依赖不会自动下载了,可以试试 -U idea:idea 这个命令,可以修复不完整依赖,依下图点击输入执行就行了
总结:
一般如果是网络为题造成的下载失败,那么上面的方法足够解决,还有一种情况是maven中心仓库根本没有这个依赖,比如 Oracle 的就没有,这个时候肯定会下载失败的,这就需要其他方法了,可能需要换个仓库,或者手动将jar部署到自己的仓库,具体步骤可以百度一下