从零搭建Maven私服(Nexus)

简介

Maven 仓库分为本地仓库、私服仓库和中央仓库。在企业内部,通常会搭建一套私服仓库,用于在不同项目组之间共享 Maven 依赖,避免重复下载;同时也可将项目成果发布到私服,供其他项目复用,作为企业内部的技术资产沉淀。

Nexus 是一款常用的 Maven 私服工具。本文将介绍如何从零搭建一套 Nexus 私服。

安装

访问官网(https://help.sonatype.com/en/download.html),下载对应系统的安装包。

待会我在本地虚拟机(CentOS7)中搭建,下载下面这个版本。

将安装包上传到服务器,解压。

shell 复制代码
tar -xvf nexus-3.89.1-02-linux-x86_64.tar.gz

进入文件 /bin 目录,启动 nexus。

shell 复制代码
./nexus start

浏览器输入 IP:8081 进入 nexus 后台管理系统。

首次登录,提示 admin 账户的密码在 /usr/local/dev/sonatype-work/nexus3/admin.password 中,登录成功后会提示重置密码。

shell 复制代码
cat /usr/local/dev/sonatype-work/nexus3/admin.password

配置

到这 nexus 搭建完成了,接下来打开本地 Maven 的 settings.xml 文件,配置本地 Maven,连接到私服。

需要配置两个地方。

(1)在 mirrors 标签中增加一个镜像源,里面填写私服的信息。

xml 复制代码
    <mirror>
      <id>maven_nexus</id>
      <name>Maven私服</name>
      <url>http://192.168.101.11:8081/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>

如下。

(2)在 servers 标签中增加一个服务地址,里面填私服的账号密码,注意 id 要和上面镜像源中的保持一致。

xml 复制代码
    <server>
      <id>maven_nexus</id>
      <username>admin</username>
      <password>123456</password>
    </server>

如下。

需要注意的是,如果你在 nexus 中设置允许匿名访问时,第二步可省略。

在首次登录时也会有弹窗,让你选择,建议不勾选,不允许匿名访问。

使用

使用前,先介绍一下 nexus 默认创建的几个仓库。

其中,

  • maven-central:中央仓库,type=proxy,表示代理模式,当本地没有所需依赖时会去代理地址(中央仓库)下载。

  • maven-releases:存放上传的稳定版 jar,稳定版同版本号默认不允许被覆盖。

  • maven-snapshots:存放上传的快照版 jar,快照版同版本号允许被覆盖。

  • maven-public:对前面三个仓库做了组合,存放了前三者的所有 jar,所以前面在配置本地 Maven 时,仅指定这个仓库即可。

(maven-public 组合了 maven-central、maven-releases、maven-snapshots)

接下来,打开一个项目,在 pom.xml 文件中,添加以下内容,表示部署时将 jar 上传到私服的哪个仓库中。

xml 复制代码
    <distributionManagement>
        <!-- 稳定版 -->
        <repository>
            <id>maven_nexus</id>
            <url>http://192.168.101.11:8081/repository/maven-releases/</url>
        </repository>

        <!-- 快照版 -->
        <snapshotRepository>
            <id>maven_nexus</id>
            <url>http://192.168.101.11:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

需要注意的是,Maven 是通过该项目的 version 末尾是否包含 -SNAPSHOT 判断是稳定版还是快照版的。

执行 mvn clean deploy 命令,将该项目部署到私服仓库中。

查看 nexus 快照仓库,可见该项目 jar 已被上传。

更换版本号为正式版本。

再次执行 mvn clean deploy 命令,可见 jar 被上传至稳定版仓库。

此时,其他连接到私服的本地 Maven 就能直接使用该 jar 包了。

参考

https://www.bilibili.com/video/BV1uApMeWErY

相关推荐
杨杨杨大侠8 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java
Thinker QAQ9 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
Gauss松鼠会9 小时前
高斯数据库(openGauss)的物理存储结构
运维·服务器·数据库·sql·opengauss·经验总结
Android系统攻城狮9 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶
杨云龙UP10 小时前
PostgreSQL 18.4 数据库整库迁移实战:pg_dump 备份与 pg_restore 恢复完整操作手册
运维·服务器·数据库·postgresql·pg_dump·pg_restore
霸道流氓气质10 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
AOI小白新手上路10 小时前
autodl常用的tar 打包下载(数据集)命令手册:逐段拆解与套用模板
java·大数据·数据库
无人生还别怕11 小时前
如何安装任意版本docker
运维·docker·容器
T0uken11 小时前
Colab:SSH 访问免费 GPU Server
运维·ssh
Python大数据分析@12 小时前
通过 MCP 实现 AI Agent自动化数据采集
运维·人工智能·爬虫·自动化