Maven依赖导入失败场景和解决方案

在使用 Maven 构建项目时,可能会发生依赖项下载错误的情况,主要原因有以下几种:

1. 下载依赖时出现网络故障或仓库服务器宕机等原因,导致无法连接至 Maven 仓库,从而无法下载依赖。
2. 依赖项的版本号或配置文件中的版本号错误,或者依赖项没有正确定义,导致 Maven 下载的依赖项与实际需要的不一致,从而引发错误。
3. 本地 Maven 仓库或缓存被污染或损坏,导致 Maven 无法正确地使用现有的依赖项,并且也无法重新下载!

解决方案:

1. 检查网络连接和 Maven 仓库服务器状态。
2. 确保依赖项的版本号与项目对应的版本号匹配,并检查 POM 文件中的依赖项是否正确。
3. 清除本地 Maven 仓库缓存(lastUpdated 文件),因为只要存在lastupdated缓存文件,刷新也不会重新下载。本地仓库中,根据依赖的gav属性依次向下查找文件夹,最终删除内部的文件,刷新重新下载即可!

例如,这里我尝试添加一个junit依赖,但是版本号4.14目前是不存在的。然后点击刷新,他就报错了

Maven依赖导入失败场景和解决方案_第1张图片

查看maven依赖的仓库,发现有两个.lastUpdated结尾的文件

Maven依赖导入失败场景和解决方案_第2张图片

这时就出现了第三种情况,我们需要找到并将其删除。手动找比较麻烦,因此我们可以使用脚本的方式,这里分为mac系统和windows系统

mac系统:

编写一个以sh为后缀名的文件,可以先在txt中编,再改后缀

文件的内容为

#!/bin/bash

# 设置仓库路径
REPOSITORY_PATH="/Users/mendianyu/apache-maven-3.6.3/repository"

# 查找并列出包含 "lastUpdated" 的文件
echo "要删除的文件:"
find "$REPOSITORY_PATH" -type f -name '*lastUpdated*' -print

# 删除包含 "lastUpdated" 的文件
find "$REPOSITORY_PATH" -type f -name '*lastUpdated*' -delete

# 查找并删除空的父文件夹
find "$REPOSITORY_PATH" -type d -empty -delete

# 显示删除完成的消息
echo "删除完成."

其中仓库路径要改成自己的。

然后在终端修改文件权限,命令为chmod 755 脚本路径 

然后终端直接输入这个脚本路径即可执行或者把脚本拖入终端也能执行

效果如下

Maven依赖导入失败场景和解决方案_第3张图片

成功删除

Maven依赖导入失败场景和解决方案_第4张图片

windows系统:

编写一个.txt文件,然后后缀改为.bat

内容为

@echo off
rem 这里写你的仓库路径
set REPOSITORY_PATH=/Users/mendianyu/apache-maven-3.6.3/repository
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%*lastUpdated*"') do (
del /s /q %%i
)
rem 搜索完毕
pause

总结:maven依赖导入失败的情况一般就这三种,前两种比较好办,第三种麻烦些,但有了脚本后也比较简单。如果出现问题,就按上面的三种方式依次排查解决。

内容参考:一、高效构建Java应用:Maven入门和进阶 (wolai.com)

你可能感兴趣的:(maven,spring,java)