从零搭建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

相关推荐
loserwang2 小时前
拆解 NIO 核心:脱离 Selector 视角,详解 Channel、Buffer 与 Netty 的进阶优化
java
zihan03212 小时前
若依(RuoYi)框架升级适配 JDK 21 和 SpringBoot 3.5.10
java·spring boot·spring·若依·若依升级jdk21
暴力求解2 小时前
Linux---进程(八)程序地址空间(虚拟地址空间)
linux·运维·服务器
cyber_两只龙宝2 小时前
Tomcat--企业级web应用服务器详细介绍与整合Nginx配置流程
linux·运维·前端·nginx·云原生·tomcat·负载均衡
Drifter_yh2 小时前
「JVM」 并发编程基石:Java 内存模型(JMM)与 Synchronized 锁升级原理
java·开发语言·jvm
Seven972 小时前
CompletableFuture深度解析:异步编程与任务编排的实现
java
kyrie学java2 小时前
SpringBoot搭建项目调试与问题解决
java·spring boot·后端
SimonKing2 小时前
多数据源:CSV、内存对象可以通过SQL查询,甚至联查,你敢信!
java·后端·程序员
我是Superman丶2 小时前
Nginx反向代理流式输出延迟?一招解决SSE/WebSocket缓冲问题SpringBoot+SSE流式输出卡住?Nginx这个配置必须关!
运维·websocket·nginx