依赖下载失败时应先查看 maven 日志中“could not transfer artifact”错误,定位具体坐标并验证远程仓库可访问性,检查镜像配置、证书信任、代理设置及排除干扰因素。

依赖下载失败时先看 Maven 日志里的 Could not transfer artifact 错误
这个错误说明 Maven 尝试从远程仓库拉取某个 jar 或 pom 文件失败,不是本地缓存问题,而是网络或仓库配置层面的阻断。常见原因包括:公司内网屏蔽了 repo.maven.apache.org、镜像地址写错、仓库认证凭据过期,或者目标 artifact 确实不存在(比如拼错了 groupId)。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 打开
target\maven-status或直接看控制台最后一段报错,定位到具体失败的坐标:com.example:lib-name:1.2.3 - 把该坐标粘贴进浏览器,访问
https://repo.maven.apache.org/maven2/com/example/lib-name/1.2.3/lib-name-1.2.3.pom,确认是否真能访问——如果 404,大概率是坐标写错或版本未发布 - 检查
~/.m2/settings.xml中<mirror></mirror>是否指向了不可用的私有仓库(比如已下线的 Nexus 地址),临时注释掉镜像块再重试
国内环境必须配阿里云镜像,但别只改 settings.xml 里的 mirrorOf
只把 mirrorOf 设为 * 看似一劳永逸,但会覆盖所有仓库(包括 JitPack、Spring Snapshot 等非 Maven Central 的源),导致它们的依赖无法下载。正确做法是让镜像精准匹配中央仓库,同时保留其他仓库直连。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 在
settings.xml的<mirrors></mirrors>下配置:<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
- 确保项目
pom.xml没有手动声明<repository></repository>覆盖 central;如有,需同步检查其<url></url>是否可访问 - 若用 IDE(如 IntelliJ),确认它没启用“Use embedded Maven”——这会让 IDE 忽略你本地的
settings.xml
mvn clean compile -U 不是万能解药,-U 只强制更新快照版本
-U 参数仅对 SNAPSHOT 版本生效(即带 -SNAPSHOT 后缀的依赖),它会跳过本地元数据缓存,重新向远程请求最新快照。对 1.2.3 这类发布版,Maven 默认不会重复拉取——哪怕你删了本地 ~/.m2/repository/com/example/... 目录,它也只会在首次构建时下载。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 遇到发布版下载失败,先手动删对应目录(如
~/.m2/repository/junit/junit/4.13.2/),再执行mvn compile,避免缓存干扰 - 确认
pom.xml中该依赖没有被<exclusions></exclusions>意外排除,或被父 POM 的<dependencymanagement></dependencymanagement>锁死成一个不存在的版本 - 用
mvn dependency:tree -Dverbose查看实际解析出的依赖路径,确认是否被其他依赖间接引入了冲突版本
代理和 SSL 证书问题常被忽略,尤其企业环境下的 JDK 信任库
很多公司用自建 HTTPS 代理或中间人防火墙,JDK 自带的 cacerts 里没导入对应根证书,Maven 就会卡在 TLS 握手阶段,报错类似 PKIX path building failed 或直接超时无提示。
实操建议:
立即学习“Java免费学习笔记(深入)”;
- 运行
mvn -X compile 2>&1 | grep "sun.security",看是否有证书验证失败日志 - 用
keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts检查当前 JDK 信任库内容(默认密码changeit) - 若需添加企业根证书,用
keytool -import -trustcacerts -file your-company-root.crt -alias company-ca -keystore $JAVA_HOME/jre/lib/security/cacerts - 不建议全局设置
MAVEN_OPTS="-Djavax.net.ssl.trustStore=...",容易引发其他工具链异常
maven-dependency-plugin 对带空格 URL 处理异常)。定位前先确认失败是否稳定复现、是否所有依赖都失败、是否换网络就正常——这些细节比盲目重装 Maven 更管用。










