从零搭建Maven私服(Nexus)

0 阅读3分钟

简介

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

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

安装

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

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

在这里插入图片描述

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

tar -xvf nexus-3.89.1-02-linux-x86_64.tar.gz

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

./nexus start

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

在这里插入图片描述

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

cat /usr/local/dev/sonatype-work/nexus3/admin.password

配置

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

需要配置两个地方。

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

    <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 要和上面镜像源中的保持一致。

    <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 上传到私服的哪个仓库中。

    <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 包了。

参考

www.bilibili.com/video/BV1uA…