Nexus3实践记录
Nexus3 实战操作记录与文档整理
一、历史版本下载
-
Sonatype 官方历史版本下载页面:
二、启动与访问
-
启动命令(Windows):
cd <nexus_install_dir>/bin nexus.exe /run -
访问地址:
http://127.0.0.1:8081/ -
初始管理员密码:
- 文件路径:
${NEXUS_HOME}/sonatype-work/nexus3/admin.password - 打开该文件,复制密码进行首次登录。
- 文件路径:
-
默认已有仓库:
maven-central(Proxy)maven-public(Group,包含 central 与 snapshots)
三、Maven 镜像配置(settings.xml)
<mirrors>
<mirror>
<id>mirrorId</id>
<mirrorOf>*</mirrorOf>
<name>localMirror</name>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
</mirror>
</mirrors>
-
mirrorOf含义:匹配要被镜像的仓库 ID 列表。*表示所有仓库,包括central、snapshots、自定义仓库等,所有下载与解析请求都走该镜像。- 也可填写具体仓库 ID,如
central,snapshots,只镜像指定仓库。
⚠️ 注意:
<mirrors>只会影响依赖解析与下载,不会自动配置上传目标。
四、pom.xml 发布配置(distributionManagement)
<distributionManagement>
<repository>
<id>myreleases</id>
<name>nex-maven-releases</name>
<url>http://127.0.0.1:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>mysnapshots</id>
<name>nex-maven-snapshots</name>
<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
-
说明:
distributionManagement告诉 Maven 在执行mvn deploy时将构件发布到哪个仓库。<repository>用于正式版本(无-SNAPSHOT),<snapshotRepository>用于快照版本(含-SNAPSHOT)。- 如未在
settings.xml或命令行通过altDeploymentRepository指定,Maven 只能依赖此配置确定上传目标。
五、服务器认证配置(settings.xml)
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
-
关键:
<id>必须与distributionManagement中的<id>保持一致,或与-DaltDeploymentRepository中的 ID 一致。- 用于上传时的权限校验,确保用户对目标仓库具备
add权限。
六、实战问题与解决方案
-
错误:
repository element was not specified ...- 原因:缺少
distributionManagement或未通过-DaltDeploymentRepository指定上传仓库。 - 解决:补齐
pom.xml中的distributionManagement,或在settings.xml/命令行中配置altDeploymentRepository。
- 原因:缺少
-
错误:HTTP 401 未授权
- 原因:
<server><id>与上传时使用的 ID 不匹配,或用户名/密码错误,无 deploy 权限。 - 解决:检查
settings.xml中的<servers>配置,确保 ID 与实际仓库一致;确认用户角色权限。
- 原因:
-
缓存提示:
was cached in the local repository ...- 原因:镜像仓库下载结果已缓存,未达更新周期。
- 解决:使用
-U强制更新,或删除本地.m2/repository缓存,或在仓库配置中加入<updatePolicy>always</updatePolicy>。
七、总结与最佳实践
- 依赖下载:统一通过
<mirrors>指向 Nexusmaven-public(Group),减少项目侵入。 - 构件发布:推荐在
pom.xml中声明distributionManagement,在settings.xml中配置<servers>做认证。 - 零侵入方案:可在
settings.xml使用altDeploymentRepository+ 命令行-DaltDeploymentRepository,但不支持自动区分 SNAPSHOT/RELEASE。 - 安全与维护:定期检查 Nexus 用户角色与权限;合理设置
updatePolicy以平衡性能与新版本获取。
浙公网安备 33010602011771号