settings.xml 应放在用户级 ${user.home}/.m2/settings.xml(推荐)或全局 $M2_HOME/conf/settings.xml;阿里云镜像 mirrorOf 必须为 *,URL 末尾是 /public;配置后需用 mvn -X 验证是否命中镜像。

settings.xml 文件该放哪?别放错位置
Maven 读取 settings.xml 有且仅有两个有效路径:用户级(推荐)和全局级。放错就等于白配。
- 用户级配置路径是
${user.home}/.m2/settings.xml,Windows 下通常是C:\Users\用户名.m2\settings.xml,macOS/Linux 是~/.m2/settings.xml - 全局级是
$M2_HOME/conf/settings.xml(即 Maven 安装目录下的conf/settings.xml),但不建议动它,升级 Maven 时容易被覆盖 - 如果文件不存在,手动创建即可,不需要从 Maven 官方复制模板
- 不要放在项目根目录、
pom.xml同级或 IDE 的任意配置目录里——Maven 压根不认
阿里云镜像配置写法:mirrorOf 必须是 *,不是 central
很多人抄错的关键点:<mirrorOf> 的值写成 central 或 repository,结果镜像完全不生效。
- 正确写法必须是
*(星号),表示“所有仓库都走这个镜像” - 阿里云镜像地址是
<a href="https://www.php.cn/link/bcd5c7859b51d8789cf3b5b9913bddec">https://www.php.cn/link/bcd5c7859b51d8789cf3b5b9913bddec</a>,注意末尾是/public,不是/central或其他路径 -
<id>值可以任意,但不能重复;常见写aliyunmaven或aliyun即可 -
<name>是纯描述,不影响功能
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>Aliyun Maven</name>
<url>https://www.php.cn/link/bcd5c7859b51d8789cf3b5b9913bddec</url>
</mirror>
</mirrors>
为什么改了 settings.xml 还是走中央仓库?检查这三处
常见现象:明明配好了,mvn clean compile 时日志里仍出现 <a href="https://www.php.cn/link/d1647f2613d1290aaddc5a88a73138c7">https://www.php.cn/link/d1647f2613d1290aaddc5a88a73138c7</a>...。
- 检查是否在项目
pom.xml中硬编码了<repositories>,尤其是写了<a href="https://www.php.cn/link/5887aebfeedcde5c7a690992128111da">https://www.php.cn/link/5887aebfeedcde5c7a690992128111da</a>—— 它会绕过settings.xml的 mirror - 检查 IDEA 或其他 IDE 是否启用了 “Use Maven wrapper” 或 “Override settings file”,有些版本会忽略你本地的
settings.xml - 执行
mvn -X clean compile(加-X开启 debug 日志),搜索Using mirror,看是否真命中了你的aliyunmaven;如果没出现,说明配置未加载或被跳过
镜像源不是万能的:哪些包它不代理?
阿里云镜像默认同步的是 central 和几个主流公共仓库,但以下情况不会命中:
- 项目依赖了私有仓库(如公司 Nexus),且
<mirrorOf>写的是*—— 这时私有库请求会被错误转发到阿里云,导致 404 - 解决办法:把私有仓库的
<id>单独列进<mirrorOf>,例如!nexus,private-repo表示“除了 id=nexus 和 private-repo 的仓库,其余都走镜像” - Spring Snapshot、JFrog JCenter(已关闭)等非标准源,阿里云不提供同步,需单独配置或换源
- 阿里云偶尔会有小时级同步延迟,遇到刚发布的版本找不到,可临时切回中央源验证是否真缺失
镜像配置本身很简单,难的是确认它真的在起作用——最可靠的方式永远是看 mvn -X 输出里的实际 HTTP 请求地址。










