必须使用maven2(proxy)类型创建阿里云代理仓库,关键填写Repository ID为aliyun-maven-public、URL为https://maven.aliyun.com/repository/public,勾选Download remote indexes,并将其拖至maven-public组顶部优先于maven-central。

在 Nexus 中创建 maven2(proxy) 类型的阿里云代理仓库
必须用 maven2(proxy) 类型,不能选 maven2(hosted) 或 maven2(group)。后者是用于托管自有构件或聚合仓库的,代理外部源必须用 proxy 模式。
创建时关键项填写如下:
-
Repository ID:建议用aliyun-maven-public(不能含空格、特殊字符) -
URL:填https://maven.aliyun.com/repository/public(注意是https,旧文档里部分用http的地址已弃用) -
Download remote indexes:勾选,否则 Nexus 不会主动拉取远程索引,搜索和依赖解析会受限 -
Auto blocking enabled:保持开启,防止上游不可用时反复重试拖慢请求
把阿里云仓库加入 maven-public Group 并调整优先级
maven-public 是 Nexus 默认提供的 group 仓库,客户端实际访问的就是它。但它的内容由成员仓库按**从上到下顺序**决定——排在前面的仓库匹配成功就直接返回,不会继续往下查。
所以必须把刚建好的 aliyun-maven-public 拖到 maven-central 之前。常见错误是把它放在最后,结果所有请求还是先打中央仓库,完全没走阿里云。
操作路径:Repositories → maven-public → Members → 拖拽排序。确认顺序类似这样:
aliyun-maven-public maven-central maven-releases maven-snapshots
为什么不能直接改 settings.xml 而要配 Nexus?
团队共用 Nexus 私服的核心价值不是“多一层转发”,而是统一出口控制。如果每个开发者自己在 settings.xml 里配 <mirrorOf>central</mirrorOf>,会出现三个典型问题:
- CI/CD 流水线环境容易漏配,导致构建在某些节点慢或失败
- 无法审计谁引入了哪个版本的
log4j或spring-core - 一旦阿里云地址变更(比如 2025 年底已从
http全量切到https),要批量改 N 台机器的配置
而 Nexus 侧统一代理后,本地 settings.xml 只需指向私服地址,所有策略、缓存、日志都在服务端收敛。
验证是否生效:看 Nexus 后台日志和缓存文件
别只信“页面显示 Enabled”,真实效果得看两点:
- 访问
https://your-nexus-host/service/rest/v1/search?repository=aliyun-maven-public&q=log4j,有返回说明代理连通且索引可用 - 首次请求某个依赖(如
org.springframework:spring-web:6.3.0)后,去 Nexus 数据目录检查:sonatype-work/nexus3/blobs/aliyun-maven-public/...下是否生成了对应 blob 文件 - 查看 Nexus 管理界面的
System → Logging,过滤关键词aliyun-maven-public,确认有Remote repository is available日志
最容易被忽略的是:Nexus 默认对 HTTPS 代理仓库会校验证书,如果上游(阿里云)证书链变动,可能静默失败——此时需手动点击仓库配置页的 View certificate 检查并信任新证书。

















