搭建 Maven 私服最主流、稳定的方案是使用 Sonatype Nexus。不仅能加速依赖下载,还能统一管理内部组件,防止因外网问题导致构建失败。
目前最新的 Nexus 3.x 需要 JDK 11 环境,推荐使用 Linux 服务器部署。
第一步:安装 Nexus
这里有三种常见安装方式,建议优先选择 Docker 或压缩包。
方式一:Docker 安装(推荐)
这是最简单快捷的方式,适合快速搭建和测试。
bash
# 运行 Nexus 容器
docker run -d --name nexus3 -p 8081:8081 --restart always sonatype/nexus3
如果需要持久化数据,可以挂载宿主机目录 -v /data/nexus:/nexus-data。
方式二:压缩包安装
适合需要精细控制参数的场景。
bash
# 1. 下载并解压
wget https://download.sonatype.com/nexus/3/nexus-3.63.0-01-unix.tar.gz
tar -zxvf nexus-3.63.0-01-unix.tar.gz -C /opt/
# 2. 创建专用用户(不建议用root运行)
useradd nexus
chown -R nexus:nexus /opt/nexus /opt/sonatype-work
# 3. 修改启动用户配置
echo 'run_as_user="nexus"' > /opt/nexus/bin/nexus.rc
# 4. 启动(配置为系统服务更佳)
/opt/nexus/bin/nexus start
⚙️ 第二步:初始化与配置
访问控制台:浏览器打开 http://<你的服务器IP>:8081。
登录:默认用户名 admin。首次登录的初始密码需在服务器上查看:cat /opt/nexus/sonatype-work/nexus3/admin.password。
修改密码:登录后会强制要求修改密码,请妥善保管。
了解仓库类型(关键):
Nexus 默认会创建几个关键仓库,理解它们很重要:
maven-releases:宿主仓库。存放你团队自己发布的正式版(RELEASE)jar包。
maven-snapshots:宿主仓库。存放快照版(SNAPSHOT,即开发测试版)jar包。
maven-central:代理仓库。代理 Maven 中央仓库,当私服没有依赖时会从这里下载并缓存。
maven-public:仓库组。将以上仓库聚合在一起,供开发人员统一访问。
🔗 第三步:配置 Maven 连接私服
修改 Maven 的配置文件 settings.xml(通常在 ~/.m2/ 或 Maven 安装目录的 conf/ 下)。
配置下载镜像:在 标签中,让所有下载请求都指向私服。
xml
<mirror>
<id>nexus-public</id>
<mirrorOf>*</mirrorOf> <!-- 拦截所有请求 -->
<name>Nexus Public Mirror</name>
<url>http://<私服IP>:8081/repository/maven-public/</url>
</mirror>
配置上传权限:在 标签中,设置发布时的账号密码。
xml
<server>
<id>nexus-releases</id> <!-- 与下方pom.xml中的id对应 -->
<username>admin</username>
<password>你的密码</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>你的密码</password>
</server>
📤 第四步:发布项目到私服
在你需要上传的项目的 pom.xml 中,添加分发管理配置。
xml
<distributionManagement>
<repository>
<id>nexus-releases</id> <!-- 与settings.xml中的server id对应 -->
<url>http://<私服IP>:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://<私服IP>:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
配置完成后,在项目目录执行 mvn clean deploy,即可将 jar 包上传至私服。
小提示:Maven 会根据 pom.xml 里的 version 是否以 -SNAPSHOT 结尾,自动决定发布到 releases 还是 snapshots 仓库。
搭建完成后,团队所有成员配置好 Maven 的 settings.xml,即可共享依赖,大幅提升构建效率。如果过程中遇到连接问题,记得检查服务器防火墙是否开放了 8081 端口。