Nexus是Sonatype 公司开发的 Maven仓库管理器,用于在企业内部搭建私有Maven 仓库,简化构件管理、加速构建速度、控制依赖来源。
官网:https://help.sonatype.com/en/sonatype-nexus-repository.html
1.仓库类型架构
┌────────────────────────────────────────────────────────────┐
│ Nexus │
│ │
│ ┌─────────────┐ │
│ │ Group │ ◄─── 客户端只需配置这一个地址 │
│ │ 仓库组 │ 即可访问所有底层仓库 │
│ └──────┬──────┘ │
│ │ 按顺序查找 │
│ ┌────┼────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────┐ ┌──────────┐ ┌──────────┐ │
│ │Hosted│ │ Proxy │ │ Group │ │
│ │本地仓库││ 代理仓库 │ │ 仓库组 │ ← 嵌套组 │
│ └──┬───┘ └────┬─────┘ └──────────┘ │
│ │ │ │
│ │ ┌─────▼─────┐ │
│ │ │ Maven中央 │ │
│ │ │ 阿里云镜像 │ │
│ │ │ 私有仓库 │ │
│ │ └───────────┘ │
│ │ │
│ └──► 公司内部构件 │
│ (第三方库、自有项目) │
└────────────────────────────────────────────────────────────┘
2.三种仓库详解
| 类型 |
全称 |
作用 |
示例 |
| Hosted |
宿主仓库 |
存放公司内部发布的构件 |
releases(正式版本)、snapshots(快照版本) |
| Proxy |
代理仓库 |
代理远程公共仓库,本地缓存 |
maven-central、maven-public |
| Group |
仓库组 |
合并多个仓库,客户端只需配一个地址 |
maven-all |
3.部署环境
| 项目 |
要求 |
| 内存 |
≥4GB,过小会导致启动失败(OOM) |
| JDK |
JDK 8+ |
| 端口 |
默认8081 |
3.1单机部署步骤
步骤1:下载解压
1 2 3 4
| cd /usr/local/src
tar xf nexus-3.20.1-01-unix.tar.gz ln -sv /usr/local/src/nexus-3.20.1-01 /usr/local/nexus
|
步骤2:启动 Nexus
1 2 3 4 5 6 7 8 9 10
| cd /usr/local/nexus
./bin/nexus --help
./bin/nexus run
./bin/nexus start
|
步骤3:初始化密码
首次启动后,查看生成的随机密码:
1
| cat /usr/local/nexus/sonatype-work/nexus3/admin.password
|
步骤4:登录 Web 界面
URL: http://服务器IP:8081
默认账户: admin
初始密码: 上述文件中的随机密码
步骤5:设置向导
登录后会进入 Setup Wizard:
- 设置新密码
- 选择是否允许匿名下载(建议关闭)
- 完成向导
4.仓库配置示例
1. 创建Hosted仓库(正式版本)
Management → Repository → Create repository
→ maven2(hosted)
Name: maven-releases
Version policy: Release
Online: true
2. 创建Hosted仓库(快照版本)
Name: maven-snapshots
Version policy: Snapshot
Deployment policy: Allow redeploy ← 允许覆盖发布
3. 创建Proxy仓库(代理中央仓库)
Name: maven-central-proxy
Version policy: Release
Remote storage: https://repo.maven.apache.org/maven2/
↓ 或代理阿里云镜像(国内更快)
Remote storage: http://maven.aliyun.com/nexus/content/groups/public/
4. 创建Group仓库组
Name: maven-public
Type: maven2(group)
Members: maven-releases, maven-snapshots, maven-central-proxy
原理:客户端配置 maven-public 仓库组,Nexus 按成员顺序依次查找构件。
5.Maven客户端配置
方法1:修改 settings.xml(推荐)
1 2 3 4 5 6 7 8 9 10
| <settings> <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <url>http://192.168.1.100:8081/repository/maven-public/</url> </mirror> </mirrors> </settings>
|
方法2:项目 pom.xml 中配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <repositories> <repository> <id>nexus</id> <url>http://192.168.1.100:8081/repository/maven-public/</url> </repository> </repositories>
<distributionManagement> <repository> <id>nexus-releases</id> <url>http://192.168.1.100:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <url>http://192.168.1.100:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
|
6.发布构件到 Nexus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<servers> <server> <id>nexus-releases</id> <username>admin</username> <password>你的密码</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>你的密码</password> </server> </servers>
mvn clean deploy
|
7.Nexus 数据备份
Nexus 数据分为两部分,需同时备份:
| 数据类型 |
存储位置 |
说明 |
| Blob 数据 |
sonatype-work/nexus3/blobs/ |
实际构件文件 |
| 元数据 |
sonatype-work/nexus3/db/ |
数据库中的索引和配置信息 |
备份方式
管理界面 → Backup → Create backup
或在配置中设置定时备份任务:
1. 添加备份存储位置
2. 配置 Blob 数据备份计划(备份目录 + 时间)
3. 配置元数据备份计划
4. 手动执行测试备份
8.扩展:用Nexus做私有Yum仓库
除了 Maven,Nexus 还可代理 Yum 仓库:
1. 创建 Repository → yum(proxy)
2. 远程存储设为阿里云 Yum 镜像地址
3. CentOS 客户端配置指向 Nexus 的 Yum 源
1 2 3 4 5 6
| [zabbix-nexus] name=zabbix baseurl=http://192.168.1.100:8081/repository/zabbix-proxy/ enabled=1 gpgcheck=0
|
这样内网机器通过 Nexus 拉取 Yum 包,无需直接访问外网。