Nexus3实践记录

Nexus3 实战操作记录与文档整理

一、历史版本下载

二、启动与访问

  1. 启动命令(Windows):

    cd <nexus_install_dir>/bin
    nexus.exe /run
    
  2. 访问地址

    http://127.0.0.1:8081/
    
  3. 初始管理员密码

    • 文件路径:${NEXUS_HOME}/sonatype-work/nexus3/admin.password
    • 打开该文件,复制密码进行首次登录。
  4. 默认已有仓库

    • 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 列表。

    • * 表示所有仓库,包括 centralsnapshots、自定义仓库等,所有下载与解析请求都走该镜像
    • 也可填写具体仓库 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>
  • 说明

    1. distributionManagement 告诉 Maven 在执行 mvn deploy 时将构件发布到哪个仓库。
    2. <repository> 用于正式版本(无 -SNAPSHOT),<snapshotRepository> 用于快照版本(含 -SNAPSHOT)。
    3. 如未在 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 权限。

六、实战问题与解决方案

  1. 错误:repository element was not specified ...

    • 原因:缺少 distributionManagement 或未通过 -DaltDeploymentRepository 指定上传仓库。
    • 解决:补齐 pom.xml 中的 distributionManagement,或在 settings.xml/命令行中配置 altDeploymentRepository
  2. 错误:HTTP 401 未授权

    • 原因:<server><id> 与上传时使用的 ID 不匹配,或用户名/密码错误,无 deploy 权限。
    • 解决:检查 settings.xml 中的 <servers> 配置,确保 ID 与实际仓库一致;确认用户角色权限。
  3. 缓存提示:was cached in the local repository ...

    • 原因:镜像仓库下载结果已缓存,未达更新周期。
    • 解决:使用 -U 强制更新,或删除本地 .m2/repository 缓存,或在仓库配置中加入 <updatePolicy>always</updatePolicy>

七、总结与最佳实践

  • 依赖下载:统一通过 <mirrors> 指向 Nexus maven-public(Group),减少项目侵入。
  • 构件发布:推荐在 pom.xml 中声明 distributionManagement,在 settings.xml 中配置 <servers> 做认证。
  • 零侵入方案:可在 settings.xml 使用 altDeploymentRepository + 命令行 -DaltDeploymentRepository,但不支持自动区分 SNAPSHOT/RELEASE。
  • 安全与维护:定期检查 Nexus 用户角色与权限;合理设置 updatePolicy 以平衡性能与新版本获取。
posted @ 2025-05-03 15:41  cqs1234  阅读(38)  评论(0)    收藏  举报