搭建 Nexus3 私服并配置第三方 Maven 仓库(阿里云等)和优先级

在企业开发环境中,搭建私有 Maven 仓库(Nexus3)可以减少外网依赖、加快构建速度,并统一管理内部组件。本文介绍如何通过 Docker Compose 部署 Nexus3,并配置阿里云等第三方中央仓库,以及如何设置仓库优先级。


1. 环境准备

  • Docker
  • Docker Compose
  • Linux 服务器 (本文示例路径:/home/env/nexus3)

2. 部署 Nexus3

2.1 编写 docker-compose.yml

/home/env/nexus3 目录下创建 docker-compose.yml 文件:

yaml 复制代码
version: '3.3'
services:
  nexus3:
    image: sonatype/nexus3:3.84.1
    container_name: nexus3
    restart: always
    ports:
      - "8082:8081"
    volumes:
      - ./data:/nexus-data

2.2 启动容器

bash 复制代码
cd /home/env/nexus3
docker-compose up -d

如果执行后无法启动,可尝试为数据目录添加权限:

bash 复制代码
chmod -R 777 data

3. Nexus 初始化配置

3.1 默认账号信息

  • 默认用户名:admin
  • 默认密码路径:
bash 复制代码
docker exec -it nexus3 cat /opt/sonatype/sonatype-work/nexus3/admin.password

3.2 初始化步骤

  1. 登录后会提示修改默认密码,在修改密码完成之后,admin.password 文件会自动删除。
  2. 设置仓库访问鉴权(强烈建议开启账号密码)

4. 仓库配置

4.1 添加阿里云仓库

  • 登录 Nexus UI (http://服务器IP:8082)

  • 进入 Repositories -> Create repository -> maven2 (proxy)

  • 填写仓库信息,例如:

    • Repository Name: maven-aliyun
    • Remote Storage: https://maven.aliyun.com/repository/public

保存后,Nexus 会将请求代理到阿里云 Maven 中央仓库。


4.2 添加特定第三方仓库 (示例:Activiti)

同样创建 maven2 (proxy) 仓库:

  • Repository Name: maven-activiti
  • Remote Storage: https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases

5. Group 仓库与优先级

Nexus 提供 Group 仓库 功能,可以将多个仓库聚合成一个入口。常见的组合方式:

  • maven-public(默认组)
    • maven-releases
    • maven-snapshots
    • maven-aliyun
    • maven-central
    • maven-activiti

目前优先级为:私包 -> 阿里云 -> 中央仓库 -> 特定三方仓库

注意:Group 仓库的优先级由顺序决定 ,上方仓库的结果优先返回。

比如想优先使用 阿里云镜像 ,需要将 maven-aliyun 移到 maven-central 前面。


6. Maven 客户端配置

在开发者机器上修改 settings.xml(示例路径:$MAVEN_HOME/conf/settings.xml~/.m2/settings.xml):

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/repository</localRepository>

  <servers>
    <!-- Nexus 私服认证 -->
    <server>
      <id>nexus</id>
      <username>admin</username>
      <password>xxx</password>
    </server>
  </servers>

  <mirrors>
    <!-- 所有请求统一走 Nexus Group 仓库 -->
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://ip:8082/repository/maven-public/</url>
    </mirror>
  </mirrors>
</settings>

这样,所有 Maven 依赖请求都会优先走 Nexus 私服,并根据配置的 Group 仓库顺序选择源。


7. 总结

通过以上步骤,我们完成了:

  1. 使用 Docker Compose 快速部署 Nexus3
  2. 初始化账号密码和权限配置
  3. 添加阿里云和第三方仓库
  4. 通过 Group 仓库设置仓库优先级
  5. 客户端配置 Maven settings.xml 使用私服

这种方式可以在团队内部快速构建高效稳定的 Maven 私服,既能利用外部加速仓库,又能保证内部依赖可控。

相关推荐
被摘下的星星1 天前
Maven
java·maven
凯尔萨厮1 天前
创建Web多模块项目(Maven管理)
java·maven
我登哥MVP1 天前
【SpringMVC笔记】 - 3 - 获取请求数据
java·spring boot·spring·servlet·tomcat·maven·intellij-idea
xuhaoyu_cpp_java2 天前
Maven学习(二)
java·经验分享·笔记·学习·maven
暗暗别做白日梦2 天前
Maven 内部 Jar 包私服部署 + 多模块父工程核心配置
java·maven·jar
凯尔萨厮2 天前
创建Web项目(Maven管理)
java·maven·web
我登哥MVP2 天前
【SpringMVC笔记】 - 1 - SpringMVC入门
java·spring boot·spring·tomcat·maven·intellij-idea·springmvc
二月夜2 天前
Maven 常用命令完整版速查表
java·maven
暗暗别做白日梦3 天前
Maven与Spring Cloud SpringBoot核心配置文件解析
spring cloud·maven
李少兄3 天前
Windows 安装 Maven 详细教程(含镜像与本地仓库配置)
java·windows·maven