前言
Nexus 作为强大的 Maven 仓库管理器,是企业级开发中搭建私有仓库的首选工具。它能解决公共仓库访问慢、依赖包私有化存储、第三方构件管理等问题,大幅提升团队研发效率。本文基于 Nexus 3.13.0 版本,详细讲解从安装部署到日常运维的完整流程,适配 JDK 1.8 + Maven 3.5.4 环境。

一、Nexus 安装部署
- 下载 Nexus
•官网下载:访问 Sonatype 官方下载页,选择 Unix 版本(Linux 环境)。
•命令行下载(推荐脚本自动化安装):
bash
#下载到 /opt/maven 目录(自定义路径需修改)
wget -O /opt/maven/nexus-unix.tar.gz http://download.sonatype.com/nexus/3/nexus-3.13.0-01-unix.tar.gz
- 解压与目录说明
bash
执行解压命令:
tar -zxf nexus-unix.tar.gz -C /opt/maven/
解压后生成两个核心目录:
目录名 作用说明
nexus-3.13.0-01 程序目录(核心运行文件),etc/nexus.properties 为核心配置文件
sonatype-work 仓库数据目录(存储配置、日志、依赖包),备份时仅需打包此目录
- 环境变量配置
bash
编辑全局环境变量
vim /etc/profile
#添加以下内容(路径需与实际安装目录一致)
NEXUS_HOME=/opt/maven/nexus-3.13.0-01
export NEXUS_HOME
#刷新环境变量
source /etc/profile
#验证安装:显示版本信息即成功
nexus -version
- 防火墙配置(关键步骤)
bash
Nexus 默认端口为 8081,需开放端口访问:
(1)iptables 防火墙
iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
/etc/rc.d/init.d/iptables save # 保存规则
service iptables restart # 重启服务
(2)firewalld 防火墙(CentOS 7+)
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload # 重载规则
二、Nexus 基础使用
- 启动 / 停止 / 重启
bash
进入程序目录的 bin 文件夹执行操作:
cd /opt/maven/nexus-3.13.0-01/bin/
#启动(首次启动可能需30秒左右)
./nexus start
#停止
./nexus stop
重启
./nexus restart
查看状态
./nexus status
- 访问与登录
bash
•浏览器访问:http://服务器IP:8081
•默认账号密码:admin/admin123(首次登录建议修改密码)
•登录后界面:左侧为仓库管理、系统设置等核心功能入口
- 仓库类型与配置方案
bash
Nexus 仓库分为 4 种类型,推荐以下企业级配置:
仓库类型 推荐仓库名 用途说明
hosted maven-releases 存储私有项目发行版构件(稳定版本)
hosted maven-snapshots 存储私有项目快照版构件(开发调试版本)
proxy maven-central 代理 Maven 中央仓库(默认配置,地址:https://repo1.maven.org/maven2/)
proxy maven-aliyun 代理阿里云 Maven 仓库(国内加速,地址:http://maven.aliyun.com/nexus/content/groups/public/)
group maven-public 仓库组(组合上述所有仓库,提供统一访问入口)
配置步骤(Web 界面):
1.登录后点击左侧「Repositories」→「Create repository」
2.选择对应仓库类型(如 proxy 仓库选「maven2 (proxy)」)
3.填写仓库名、远程地址(如阿里云地址),保存即可
4.编辑 maven-public 仓库组,将所有仓库添加到「Members」列表
- YUM 仓库配置(扩展功能)
bash
除了 Maven 仓库,Nexus 还支持 YUM 仓库管理:
1.创建 YUM 代理仓库:选择「yum (proxy)」,远程地址填写阿里云 YUM 源(http://mirrors.aliyun.com/centos)
2.配置本地 YUM 源:
#创建 repo 文件
vim /etc/yum.repos.d/nexus.repo
写入以下内容(替换服务器IP和端口)
[nexus-yum]
name=Nexus YUM Repository
baseurl=http://192.168.1.100:8081/repository/yum-aliyun/$releasever/os/$basearch/
enabled=1
gpgcheck=0
priority=1
刷新 YUM 缓存
yum clean all && yum makecache
- 定时任务配置(磁盘清理)
bash
快照版构件会持续占用磁盘空间,需配置定时清理:
1.左侧「System」→「Tasks」→「Create task」
2.选择「Maven - Delete SNAPSHOT components」
3.设置清理周期(如每周日凌晨 2 点)、保留天数(如 30 天)
4.保存并启用任务
三、开机自启动配置(Systemd)
为保证服务稳定性,配置 Systemd 自启动:
1.创建服务文件:
bash
vim /lib/systemd/system/nexus.service
2.写入以下内容(路径需匹配实际安装目录):
bash
[Unit]
Description=Nexus Repository Manager
After=network.target
[Service]
Type=forking
LimitNOFILE=65536 # 解决文件句柄限制警告
Environment=RUN_AS_USER=root
ExecStart=/opt/maven/nexus-3.13.0-01/bin/nexus start
ExecReload=/opt/maven/nexus-3.13.0-01/bin/nexus restart
ExecStop=/opt/maven/nexus-3.13.0-01/bin/nexus stop
Restart=on-failure # 故障自动重启
PrivateTmp=true
[Install]
WantedBy=multi-user.target
3.启用自启动:
bash
重新加载系统服务
systemctl daemon-reload
#启用开机自启
systemctl enable nexus
#验证自启状态
systemctl is-enabled nexus
四、Nexus 与 Maven 集成
- 配置 Maven Settings.xml
bash
修改本地 Maven 的 conf/settings.xml(或用户目录 .m2/settings.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\.m2</localRepository>
<!-- 私服账号认证(id需与仓库id一致) -->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<!-- 镜像配置(优先从私服下载) -->
<mirrors>
<mirror>
<id>public</id>
<mirrorOf>*</mirrorOf> <!-- 匹配所有仓库请求 -->
<url>http://192.168.1.100:8081/repository/maven-public/</url> <!-- 私服仓库组地址 -->
</mirror>
</mirrors>
<!-- 激活Profile -->
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
- 配置项目 POM.xml(发布构件)
bash
在项目 POM.xml 中添加分发管理配置,支持 mvn deploy 上传构件到私服:
<distributionManagement>
<!-- 发行版构件上传到 releases 仓库 -->
<repository>
<id>releases</id>
<name>Maven Releases Repository</name>
<url>http://192.168.1.100:8081/repository/maven-releases/</url>
</repository>
<!-- 快照版构件上传到 snapshots 仓库 -->
<snapshotRepository>
<id>snapshots</id>
<name>Maven Snapshots Repository</name>
<url>http://192.168.1.100:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- Maven 命令示例
bash
#编译打包(跳过测试)
mvn clean package -Dmaven.skip.test=true
#发布构件到私服(需激活Profile)
mvn clean deploy -Dmaven.skip.test=true -P nexus
五、备份与迁移
- 备份
bash
Nexus 所有数据(配置、依赖包)均存储在 sonatype-work 目录,备份命令:
#打包备份(建议定时执行)
tar -zcf nexus-backup-$(date +%Y%m%d).tar.gz /opt/maven/sonatype-work/
- 迁移
bash
1.在新服务器安装相同版本的 Nexus
2.停止新服务器 Nexus 服务:systemctl stop nexus
3.删除新服务器的 sonatype-work 目录
4.将原服务器的备份包解压到新服务器对应目录:
tar -zxf nexus-backup-20240520.tar.gz -C /opt/maven/
1.启动新服务器 Nexus 服务:systemctl start nexus
六、常见问题(FAQ)
- 启动报错:Please define INSTALL4J_JAVA_HOME to point to a suitable JVM
bash
原因:Nexus 未找到 JDK 路径,即使配置了 JAVA_HOME 也可能识别失败。
解决:编辑 Nexus 启动脚本,指定 JDK 路径:
vim /opt/maven/nexus-3.13.0-01/bin/nexus
在脚本开头添加(替换为实际 JDK 安装路径)
INSTALL4J_JAVA_HOME_OVERRIDE=/usr/local/jdk1.8.0_202
- 访问 Nexus 页面超时
bash
•检查防火墙是否开放 8081 端口
•查看 Nexus 日志:tail -f /opt/maven/sonatype-work/nexus3/log/nexus.log
•确认服务器内存是否充足(Nexus 建议最小内存 2G)
- Maven 下载依赖失败
bash
•检查 Settings.xml 中镜像地址、账号密码是否正确
•确认 Nexus 仓库是否正常运行(Web 界面可访问)
•检查网络连通性:ping 服务器IP + telnet 服务器IP 8081