镜像配置必须放在<mirrors>标签内,且<mirrorOf>值应为central(小写),URL推荐使用https://maven.aliyun.com/repository/public;多个镜像按XML顺序匹配,通配符*勿置首。

镜像配置写在 <mirrors> 里,不是 <profiles>
很多人把阿里云镜像配置错位置,直接贴进 <profiles> 或 <servers>,结果 mvn clean install 完全不走镜像。Maven 只有在 <mirrors> 块中定义的镜像才会被自动路由——它不看 profile 是否激活,也不需要手动 -P 指定。
正确位置示例:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0">
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Maven</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
</settings>
-
<mirrorOf>必须是central(小写),不是Central、Maven Central或*—— 后者会覆盖所有仓库(包括私有 Nexus),容易导致内部依赖拉不到 - 如果公司有自建 Nexus,建议用
<mirrorOf>central,!nexus-snapshots</mirrorOf>排除特定仓库 - 多个
<mirror>时,Maven 按 XML 顺序匹配,第一个匹配的生效;别把通配镜像(如*)放在前面
mirrorOf 值写错会导致依赖找不到或降级到慢速中央仓库
常见错误现象:Could not find artifact xxx:jar:1.2.3,但该包明明在中央仓库存在;或者构建突然变慢,mvn -X 日志里显示还在连 repo.maven.apache.org。
根本原因是 <mirrorOf> 不匹配当前请求的仓库 ID。Maven 不是“全局代理”,而是按仓库 ID 精确路由:
- 默认
central仓库的 ID 就是central,所以镜像必须写<mirrorOf>central</mirrorOf> - 如果你在
pom.xml里声明了<repository><id>my-internal</id></repository>,那它不会被central镜像捕获,除非你显式写<mirrorOf>central,my-internal</mirrorOf> -
<mirrorOf>*</mirrorOf>确实能兜住全部,但会劫持所有<repository>(包括你自己的 snapshot 仓库),上线前务必验证
阿里云 URL 有多个版本,生产环境推荐用 https://maven.aliyun.com/repository/public
阿里云提供多个路径,区别在于仓库范围和稳定性:
-
https://maven.aliyun.com/repository/public:只同步中央仓库(Maven Central)的 release 包,更新及时、最稳定,99% 场景够用 -
https://maven.aliyun.com/repository/central:历史别名,已逐步弃用,部分旧文档还在用,不建议新配 -
https://maven.aliyun.com/repository/spring:Spring 官方 repo 镜像,仅当项目明确依赖spring-milestones或spring-snapshots时才需额外加镜像 - 不要用带
/nexus/路径的地址(如.../nexus/content/groups/public),那是旧版 Nexus 的路径,阿里云不维护
如果项目用了 Spring Boot 3.x + Jakarta EE 9+,确认 public 仓库已包含 jakarta.* 包——它确实包含,不用额外切仓库。
Windows 用户注意 settings.xml 路径和权限问题
不是所有 IDE 都读取你以为的那个 settings.xml。常见陷阱:
- IntelliJ 默认用内置 Maven,不是你系统安装的,得在
Settings → Build → Maven里手动指定user settings file - VS Code 的 Maven 插件可能缓存旧配置,改完
settings.xml后要重启插件或执行Maven: Reload project - Windows 下如果
settings.xml在C:\Users\XXX\.m2\,而你用管理员运行 CMD 执行mvn,Maven 会去找C:\Program Files\Apache\maven\conf\settings.xml(全局配置),而不是用户目录下的 - 检查是否生效:运行
mvn help:effective-settings,看输出里<mirrors>是否出现你配的aliyunmaven
镜像配置本身很简单,难的是确认它真正在起作用——尤其当团队共用一套 CI 脚本、或不同开发机环境不一致时,effective-settings 是唯一可信依据。

















