settings.xml 文件应配置在用户级路径:Linux/macOS 为 ~/.m2/settings.xml,Windows 为 %USERPROFILE%.m2\settings.xml;镜像必须置于 <mirrors> 标签下,推荐使用 <mirrorOf>central</mirrorOf> 匹配阿里云镜像,且需检查 IDE 是否指向该文件、编码是否为 UTF-8 无 BOM。

settings.xml 文件在哪,改哪个文件
不是项目里的 settings.xml,也不是 Maven 安装目录下的默认文件(除非你明确想全局生效);真正起作用的是用户级配置文件:~/.m2/settings.xml(Linux/macOS)或 %USERPROFILE%\.m2\settings.xml(Windows)。如果这个文件不存在,就手动创建一个——Maven 启动时只认这个路径,其他位置的文件不会被加载。
mirror 配置必须放在 <mirrors> 标签下
常见错误是把镜像配置写在 <profiles> 里、或者直接塞进 <repositories>,这样完全无效。Maven 的镜像机制只通过 <mirrors> 生效,且会自动匹配所有请求的中央仓库(central)。
推荐用阿里云镜像,配置片段如下:
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
-
<mirrorOf>central</mirrorOf>表示覆盖官方中央仓库;写*会覆盖所有仓库(不推荐,可能干扰私有仓库) -
<id>值不能重复,且最好和<url>语义一致,便于排查 - 不需要额外启用 profile 或设置
activeByDefault,mirror 是无条件生效的
改完不生效?检查这几个点
最常踩的坑不是配置写错,而是环境没对上:
- IDE(如 IntelliJ)可能自带内嵌 Maven,它读的是 IDE 自己指定的
settings.xml路径,不是你系统用户的那个;需在Settings → Build → Build Tools → Maven里手动指定配置路径 - 命令行执行
mvn -X clean compile,看日志里下载依赖时的 URL 是否变成maven.aliyun.com;如果还是repo.maven.apache.org,说明没读到你改的文件 - 确认文件编码是 UTF-8,BOM 头会导致解析失败(尤其 Windows 下用记事本保存过)
- 某些公司网络会拦截 HTTPS 镜像,可临时试下 HTTP 版本(不推荐长期用):
http://maven.aliyun.com/repository/public
多个镜像怎么选,<mirrorOf> 的匹配逻辑
Maven 不支持“优先级”或“fallback”,只取第一个完全匹配的 mirror。比如:
-
<mirrorOf>central</mirrorOf>→ 只匹配 id 为central的仓库 -
<mirrorOf>*,!repo-a</mirrorOf>→ 匹配所有仓库,但排除repo-a - 如果两个 mirror 的
<mirrorOf>都匹配同一个仓库,前面定义的那个生效
实际中基本用不到复杂匹配,单个 central 就覆盖 95% 的依赖下载场景。真有私有仓库需求,应该在项目 pom.xml 里单独配 <repository>,而不是靠 mirror 劫持。
镜像地址本身不校验可用性,填错 URL 或网络不通时,Maven 会静默回退到原始仓库(或报 404/503),这点容易误判为“配置没生效”。建议先用 curl -I https://maven.aliyun.com/repository/public 确认基础连通性。


















