为什么自建私服

当团队规模增大,频繁依赖外部 Maven 中央仓库会导致构建迟缓。搭建 Nexus 私服能够:

  • 统一缓存依赖,减少开发者本地下载时间。
  • 对内部制品做版本管控与权限隔离。
  • 支持代理国内镜像,规避网络波动。

安装 Nexus 3

  1. 下载 Nexus 3.7 以上版本(需要 JDK 17)。
  2. 解压后重点关注两个目录:
nexus-3.77.1-01/        # 主程序
sonatype-work/nexus3/   # 数据与配置

核心命令:

./nexus start   # 启动
./nexus stop    # 停止
./nexus status  # 查看状态

初始密码位于 sonatype-work/nexus3/admin.password,首次登录后系统会要求修改并删除该文件。

首次登录与端口设置

编辑 nexus-3.77.1-01/etc/nexus-default.properties 可以更改默认端口(示例使用 8090)。随后访问 http://localhost:8090,用 admin + 初始密码登陆后台。

Nexus 后台首页

配置代理与仓库

Repositories 模块中:

  • maven-central 这类 Proxy 仓库改用阿里云镜像地址 http://maven.aliyun.com/nexus/content/groups/public/
  • 新建一个 Hosted 仓库(例如 levon-release)存放内部制品。
  • 新建一个 Group 仓库(例如 levon-public),将 Proxy 与 Hosted 仓库组合,统一对外提供地址。

设置阿里云代理

配置 Maven 客户端

~/.m2/settings.xml 中加入以下配置:

<settings>
  <localRepository>/Users/leivik/Developtools/apache-maven-3.9.9/local_repository</localRepository>

  <servers>
    <server>
      <id>levon</id>
      <username>admin</username>
      <password>admin</password>
    </server>
  </servers>

  <mirrors>
    <mirror>
      <id>levon</id>
      <mirrorOf>*</mirrorOf>
      <name>levon-public</name>
      <url>http://localhost:8090/repository/levon-public/</url>
    </mirror>
  </mirrors>
</settings>

其中:

  • localRepository 指定 Maven 本地缓存路径。
  • serversid 必须与仓库发布时使用的 <distributionManagement>id 匹配。
  • mirrors 用于将所有依赖请求统一转发到 Nexus 私服。

Maven 客户端配置示意

使用建议

  • 定期备份 sonatype-work 目录,避免数据丢失。
  • 为不同环境(开发、测试、生产)创建独立的 Hosted 仓库,借助角色权限控制发布范围。
  • 配置邮件或 Webhook,监控仓库空间与磁盘使用率。

小结

Nexus 私服让团队拥有可控、快速的依赖分发渠道。按照以上步骤完成安装与配置后,新成员仅需更新 settings.xml 就能享受统一的制品服务。