在企业开发环境中,搭建私有 Maven 仓库(Nexus3)可以减少外网依赖、加快构建速度,并统一管理内部组件。本文介绍如何通过 Docker Compose 部署 Nexus3,并配置阿里云等第三方中央仓库,以及如何设置仓库优先级。
1. 环境准备
- Docker
- Docker Compose
- Linux 服务器 (本文示例路径:
/home/env/nexus3
)
2. 部署 Nexus3
2.1 编写 docker-compose.yml
在 /home/env/nexus3
目录下创建 docker-compose.yml
文件:
yaml
version: '3.3'
services:
nexus3:
image: sonatype/nexus3:3.84.1
container_name: nexus3
restart: always
ports:
- "8082:8081"
volumes:
- ./data:/nexus-data
2.2 启动容器
bash
cd /home/env/nexus3
docker-compose up -d
如果执行后无法启动,可尝试为数据目录添加权限:
bash
chmod -R 777 data
3. Nexus 初始化配置
3.1 默认账号信息
- 默认用户名:
admin
- 默认密码路径:
bash
docker exec -it nexus3 cat /opt/sonatype/sonatype-work/nexus3/admin.password
3.2 初始化步骤
- 登录后会提示修改默认密码,在修改密码完成之后,
admin.password
文件会自动删除。 - 设置仓库访问鉴权(强烈建议开启账号密码)
4. 仓库配置
4.1 添加阿里云仓库
-
登录 Nexus UI (http://服务器IP:8082)
-
进入 Repositories -> Create repository -> maven2 (proxy)
-
填写仓库信息,例如:
- Repository Name:
maven-aliyun
- Remote Storage:
https://maven.aliyun.com/repository/public
- Repository Name:
保存后,Nexus 会将请求代理到阿里云 Maven 中央仓库。

4.2 添加特定第三方仓库 (示例:Activiti)
同样创建 maven2 (proxy) 仓库:
- Repository Name:
maven-activiti
- Remote Storage:
https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases

5. Group 仓库与优先级
Nexus 提供 Group 仓库 功能,可以将多个仓库聚合成一个入口。常见的组合方式:
maven-public
(默认组)- maven-releases
- maven-snapshots
- maven-aliyun
- maven-central
- maven-activiti
目前优先级为:私包 -> 阿里云 -> 中央仓库 -> 特定三方仓库
注意:Group 仓库的优先级由顺序决定 ,上方仓库的结果优先返回。
比如想优先使用 阿里云镜像 ,需要将
maven-aliyun
移到maven-central
前面。

6. Maven 客户端配置
在开发者机器上修改 settings.xml
(示例路径:$MAVEN_HOME/conf/settings.xml
或 ~/.m2/settings.xml
):
xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 本地仓库 -->
<localRepository>D:/tools/maven/repository</localRepository>
<servers>
<!-- Nexus 私服认证 -->
<server>
<id>nexus</id>
<username>admin</username>
<password>xxx</password>
</server>
</servers>
<mirrors>
<!-- 所有请求统一走 Nexus Group 仓库 -->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://ip:8082/repository/maven-public/</url>
</mirror>
</mirrors>
</settings>
这样,所有 Maven 依赖请求都会优先走 Nexus 私服,并根据配置的 Group 仓库顺序选择源。

7. 总结
通过以上步骤,我们完成了:
- 使用 Docker Compose 快速部署 Nexus3
- 初始化账号密码和权限配置
- 添加阿里云和第三方仓库
- 通过 Group 仓库设置仓库优先级
- 客户端配置 Maven
settings.xml
使用私服
这种方式可以在团队内部快速构建高效稳定的 Maven 私服,既能利用外部加速仓库,又能保证内部依赖可控。