程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 依赖管理 - Maven

    • Maven 安装配置
    • Maven 仓库解析
    • Maven 项目构建
    • Maven 依赖管理
    • 手动安装Maven依赖
    • Maven 聚合
    • Maven 继承
    • Maven 属性
    • Maven 版本与测试
    • Maven 资源与多环境配置
    • Maven 生命周期与插件
    • 本地搭建Maven私服
      • 1. 私服的下载与启动
        • 下载 Nexus
        • 启动 Nexus
        • 自定义配置
      • 2. Nexus 仓库分类
      • 3. 上传与下载配置
        • 配置步骤:
      • 4. Nexus 的用户登录与管理
      • 5. 常见问题与注意事项
    • Docker搭建Maven私服
    • Maven 上传中央仓库
    • Maven 依赖排除插件
  • 开发管理 - Git

  • Git小乌龟教程

  • 代码管理
  • 依赖管理 - Maven
scholar
2024-08-20
目录

本地搭建Maven私服

# Maven 私服

  • 1. 私服的下载与启动
    • 下载 Nexus
    • 启动 Nexus
    • 自定义配置
  • 2. Nexus 仓库分类
  • 3. 上传与下载配置
    • 配置步骤:
  • 4. Nexus 的用户登录与管理
  • 5. 常见问题与注意事项

私服(私有仓库)是一种架设在局域网内的 Maven 仓库服务器,它能够代理广域网中的远程仓库,供局域网内的用户访问。私服主要有以下作用:

  • 缓存远程仓库的依赖,减少外网访问,提高依赖获取的速度。
  • 部署团队内部开发的组件,供团队成员共享。
  • 代理中央仓库和其他公共仓库,统一管理依赖。

常用的私服工具是 Nexus,它由 Sonatype 公司开发,支持 Maven 仓库的管理。

# 1. 私服的下载与启动

# 下载 Nexus

访问 Nexus 下载页面 (opens new window) 选择适合的版本进行下载。

# 启动 Nexus

  1. 解压下载的 Nexus 文件。

  2. 进入解压后的目录,打开 bin 文件夹。

  3. 在命令行中运行以下命令启动 Nexus:

    nexus.exe /run nexus
    
    1
  4. 启动后,访问 http://localhost:8081 进入 Nexus 控制台。

# 自定义配置

  • 修改端口:进入 nexus-default.properties 文件(路径为 etc/ 目录),修改其中的 application-port 属性即可更改端口号。
  • 调整内存配置:进入 bin/ 目录下的 nexus.vmoptions 文件,修改 JVM 参数调整 Nexus 的内存占用。

# 2. Nexus 仓库分类

Nexus 中的仓库类型主要包括:

  1. 宿主仓库(hosted):

    • 保存无法从中央仓库获取的资源,如自主研发或第三方非开源的组件。
    • 分为 releases(正式版)和 snapshots(快照版)两种类型。
  2. 代理仓库(proxy):

    • 代理远程仓库,通过私服访问中央仓库或其他公共仓库。
    • 例如,当依赖包在本地找不到时,私服会先从代理仓库获取。
  3. 仓库组(group):

    • 将多个仓库组合在一起,简化配置,便于统一管理。
    • 仓库组本身不保存资源,它仅用于设计和管理多个仓库。

# 3. 上传与下载配置

在实际开发中,常见的操作是将项目打包并上传到私服,同时配置项目从私服下载依赖。

# 配置步骤:

  1. 配置私服的用户名和密码

    打开 Maven 根目录下的 settings.xml 文件,在 <servers> 节点中添加私服的认证信息:

    <servers>
        <server>
            <id>kbt-release</id>
            <username>admin</username>
            <password>admin1234</password>
        </server>
        <server>
            <id>kbt-snapshots</id>
            <username>admin</username>
            <password>admin1234</password>
        </server>
    </servers>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    注意:id 必须与项目 pom.xml 文件中的配置保持一致。

  2. 配置私服的仓库地址

    在 settings.xml 文件中配置私服的镜像地址:

    <mirrors>
        <mirror>
            <id>nexus-kbt</id>
            <mirrorOf>*</mirrorOf>
            <url>http://localhost:8081/repository/maven-public/</url>
        </mirror>
    </mirrors>
    
    1
    2
    3
    4
    5
    6
    7

    其中,* 代表代理所有仓库。Maven 下载依赖时,会按照镜像的顺序依次查找。

  3. 在项目的 pom.xml 中配置私服的发布地址

    在项目的 pom.xml 文件中添加发布配置:

    <distributionManagement>
        <repository>
            <id>kbt-release</id>
            <url>http://localhost:8081/repository/kbt-release/</url>
        </repository>
        <snapshotRepository>
            <id>kbt-snapshots</id>
            <url>http://localhost:8081/repository/kbt-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    repository 配置用于发布正式版,snapshotRepository 配置用于发布快照版。id 必须与 settings.xml 中的 id 保持一致。

  4. 发布到私服

    使用以下命令将项目打包并发布到私服:

    mvn deploy
    
    1

    或者使用 IDEA 的界面进行上传:

    image-20220206154515836

# 4. Nexus 的用户登录与管理

  • 默认用户名为 admin,初始密码保存在 sonatype-work/nexus3/admin.password 文件中。
  • 登录后可以修改密码、创建用户、管理仓库以及配置仓库策略等。

# 5. 常见问题与注意事项

  • 上传失败:确保 settings.xml 中的 id 与 pom.xml 中的 id 一致,否则可能会导致权限问题。
  • 仓库选择:发布 SNAPSHOT 版本时,请确保版本号中包含 -SNAPSHOT,以便自动上传到 snapshots 仓库。
  • 代理仓库的配置顺序:Maven 会按照镜像配置的顺序依次查找仓库,因此请根据实际情况调整仓库的优先级。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
Maven 生命周期与插件
Docker搭建Maven私服

← Maven 生命周期与插件 Docker搭建Maven私服→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式