maven卡在下载插件主因是默认中央仓库国内直连超时且无自动重试,需同时配置和指向阿里云镜像,并设置*及3等重试参数。

为什么 maven 总卡在下载插件上?
不是网络差,是默认中央仓库 https://repo.maven.apache.org/maven2/ 在国内直连经常超时或重定向失败。Maven 不会自动重试失败的插件下载(比如 maven-compiler-plugin),一旦首次失败就停住,报错类似:Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:3.11.0 from/to central。
改 settings.xml 镜像地址,但别只换一个
只把 <mirrorof>central</mirrorof> 指向阿里云或腾讯云镜像,对插件下载无效——因为很多插件声明在 pluginRepositories 里,而默认配置中这部分是空的或没被镜像覆盖。
- 必须同时配置
<repositories></repositories>和<pluginrepositories></pluginrepositories>,都指向同一镜像源 - 推荐用阿里云:
https://maven.aliyun.com/repository/public(兼容性好,同步及时) -
<mirrorof></mirrorof>改成*或external:*,避免漏掉非central的仓库引用
mvn 命令加参数比改配置更灵活
临时调试或 CI 环境里,硬改 settings.xml 容易出错。直接用命令行参数覆盖更可控:
- 指定仓库:
mvn clean compile -Dmaven.repo.remote=https://maven.aliyun.com/repository/public - 强制更新快照:
-U(但别滥用,会拖慢构建) - 跳过插件下载检查(仅调试):
-Dmaven.plugin.validation=OFF,慎用,可能掩盖真实问题
重试机制得靠 ~/.m2/settings.xml 里的 <retries></retries>
Maven 默认只试 1 次就放弃下载。想让它多试几次,必须显式配置:
<settings>
<servers>
<server>
<id>central</id>
<configuration>
<retries>3</retries>
<retryIntervalMilliseconds>1000</retryIntervalMilliseconds>
</configuration>
</server>
</servers>
</settings>
注意:<id></id> 必须和仓库定义中的 <id></id> 一致;<retries></retries> 对 HTTP 404 无效,只对连接超时、503 等可重试错误起作用。
插件下载路径和仓库 ID 经常不一致,比如 maven-surefire-plugin 可能从 central 下,也可能从 plugins 这个 ID 下——所以最稳妥的是把所有常用仓库 ID 都配上 <server></server> 块。










