1. 问题背景:当Maven开始"罢工"
最近在给一个老项目升级Spring Boot版本时,遇到了一个让人抓狂的问题。项目原本在Maven 3.6.3上跑得好好的,升级到3.8.6后突然就开始报错:
bash复制[ERROR] Failed to execute goal on project demo: Could not resolve dependencies...
[ERROR] Blocked mirror for repositories: [central]
最诡异的是,我明明已经在settings.xml里配置了阿里云镜像,网络也完全正常。这个错误就像个顽固的门卫,死活不让我下载任何依赖。作为一个有五年Java开发经验的老手,我第一反应是:"这不可能啊!"
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 深入Maven的"黑名单"机制
2.1 Maven 3.8+的安全升级
经过仔细排查,终于发现了问题根源。原来从Maven 3.8.1开始,官方引入了一个新的安全机制:默认阻止直接访问中央仓库。这个改动在官方文档里其实有说明,但很容易被忽略。
Maven团队这么做的初衷是好的:防止潜在的中间人攻击和元数据篡改。他们希望开发者都通过可信的镜像来获取依赖,而不是直接连中央仓库。但问题在于,这个机制的实际表现有点"矫枉过正"。
2.2 配置冲突的真相
在我的settings.xml里,有两段关键配置:
xml复制<!-- 阿里云镜像 -->
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!-- 默认的中央仓库镜像 -->
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf>
<url>https://repo.maven.apache.org/maven2</url>
<blocked>true</blocked> <!-- 罪魁祸首 -->
</mirror>
Maven的解析逻辑是这样的:
- 先找专门针对central仓库的镜
