Maven进阶-配置私服(Nexus 的使用)

引言

私服的配置也是企业开发中经常用到的,主要是为了协助多人或者多台设备的共同开发。

我们知道 Maven 项目可以 install 到本地仓库,但是其他设备无法访问我们本地的仓库,我们需要将做好的模块部署(deploy)到一个服务器上,供其他设备下载使用。

这时可以想到,Maven 的中央仓库做的就是这样的事情,也许我们可以把自己的项目上传到 Maven 中央仓库?

确实可行但并不实用,因为中央仓库并不会随意供人上传文件,需要申请,另外中央仓库里的东西都是公开的,有时我们并不希望这样。

所以私服就体现出了作用,私服可以作为中央管理系统来管理 Maven 依赖,一来它能供我们自由的上传和下载我们自己开发的项目,二来它能帮助我们下载中央仓库中的依赖。私服就成了属于我们自己的中央仓库,可以自由使用。

本文借助 Nexus 工具来实现私服的搭建。

一、Nexus 的下载

官网下载地址:https://help.sonatype.com/repomanager3/product-information/download

官网也许下载不了,需要翻墙

网盘地址(3.31版本):https://pan.baidu.com/s/1oqUR_xmauprG-3V-PWHq-Q
提取码:o8bg

这篇文章里有其他版本的网盘地址:nexus3下载地址

二、Nexus 启动服务器

下载之后解压就好,无需安装

解压之后有两个文件夹, nexus-3.31.1-01 和 sonatype-work,两个都有用,如下图:

在这里插入图片描述

进入 nexus-3.31.1-01\bin 目录下:

在这里插入图片描述

路径栏输入 cmd,回车打开命令行:

在这里插入图片描述

输入命令:nexus.exe /run nexus 回车:

在这里插入图片描述

等待片刻后,出现 Started Sonatype Nexus OSS 就完成了:

在这里插入图片描述

在命令行中按下 ctrl + c 即可正常关闭 Nexus,直接点 × 是强制关闭

三、首次配置 Nexus

服务器启动之后,浏览器访问 localhost:8081 即可打开管理页面:

在这里插入图片描述

点击右上角 Sign In 进行登录:

在这里插入图片描述

用户名为 admin,密码在 sonatype-work\nexus3\admin.password 文件中,用记事本打开文件,将里面的密码复制出来:

在这里插入图片描述
在这里插入图片描述

登录成功之后会进行第一次启动的配置,点击 next:

在这里插入图片描述

重新设置 admin 用户的密码,需要输入两次,我先以 admin 作为密码设置:

在这里插入图片描述

是否允许匿名访问,若开启,任何人无需密码就能访问私服并下载文件,但没有管理权限,自己用怎么选都行,我先选择 Disable 禁止:

在这里插入图片描述

是否发送使用信息给开发者,怎么选都行,我先选 No 不发送:

在这里插入图片描述

完成了!点击 Finish:

在这里插入图片描述

四、新建仓库

点击上方的齿轮进入设置,在点击 repositories 进入仓库设置:

在这里插入图片描述

如上图中可以看到,不同于本地仓库,私服中可以有多个仓库,且每一个仓库都有类别,此处简单说明一下这三种类别:

  • proxy:代理仓库,镜像其他的仓库,如 Maven 中央仓库
  • hosted:宿主仓库,用于存放我们上传的包
  • group:仓库组,联合了多个仓库,下载时指定仓库组即可,无需指定具体的仓库

现在私服里有默认创建的一些仓库可以使用,不过我们来尝试自己创建仓库。

对于项目的版本,通常有开发中的 SNAPSHOT(快照版本),和开发完成的 RELEASE(发布版本),通常为这两种版本的项目分别设置仓库,接下来我们试着创建 my-snapshot 和 my-release 两个仓库

(如果你不想新建仓库,可以把已有的 maven-snapshot 和 maven-release 代替之后的 my-snapshot 和 my-release)

首先创建 my-snapshot 仓库点击 Create repository:

在这里插入图片描述

选择 maven2(hosted) 仓库:

在这里插入图片描述

输入仓库名,并选择 Version policy 为 Snapshot,除此以外什么都不需要改:

在这里插入图片描述

点击页面底部的 Create repository 按钮即可:

在这里插入图片描述

同样的方法,来创建 my-release 仓库,这时需要选择 Version policy 为 Release:

在这里插入图片描述

五、设置仓库组

前面说过,仓库组(group)是将几个仓库联合起来的组,下载包时只需要指定仓库组,就能找到需要的依赖,而不必指定具体的仓库

比如将我们自己创建的仓库和 Maven 中央仓库联合,私服就能自己判断哪些包是我们上传的,而哪些需要去中央仓库下载

我们直接用默认创建好 maven-public 仓库组来设置一下,将刚才创建的 my-snapshot 和 my-release 仓库添加到组内(自己创建仓库组也是可以的,需选择仓库类别为 maven2(group) )

点击仓库组的名称 maven-public:

在这里插入图片描述

在页面底部,选择 my-snapshot 和 my-release 两个仓库(ctrl + 左键 可以多选),点击右箭头,或者直接拖拽到右侧,即可加入此仓库组

在这里插入图片描述

点击 Save 保存即可:

在这里插入图片描述

六、仓库的 URL

Maven 通过 url 定位 仓库或者仓库组,点开一个仓库(组)即可看到它的 url:

在这里插入图片描述

或者点击 仓库列表中 URL 列的 copy 按钮:

在这里插入图片描述

七、Maven 的配置

1、配置 mirror

mirror 是 Maven 下载依赖时访问的镜像,我们将私服中的仓库组 maven-public 作为镜像

打开 maven 的目录下的 conf\setting.xml 文件,找到 mirrors 标签,添加一个 mirror,表示下载依赖时访问的仓库组:

<mirrors>
  <mirror>
    <id>maven-public</id> 	<!-- 仓库组名 -->
    <mirrorOf>*</mirrorOf>	<!-- 镜像范围:全部 -->
    <name>nexus maven</name>	<!-- name 随意写即可,也可以不写 -->
    <url>http://localhost:8081/repository/maven-public/</url>	<!-- 仓库组的 url -->
  </mirror>
</mirrors>

在这里插入图片描述

2、配置 server

server 是 Maven 上传包时访问的服务器中的仓库,配置 server 不需要仓库的 URL,因为我们会在项目的 pom.xml 中配置

打开 maven 的目录下的 conf\setting.xml 文件,找到 servers 标签,添加两个 server,分别表示我们自己创建的 my-snapshot 和 my-release 两个仓库:

<servers>
  <server>
    <id>my-snapshot</id>	<!-- 仓库名 -->
    <username>admin</username>	<!-- 私服用户名 -->
    <password>admin</password>	<!-- 私服密码 -->
  </server>
  
  <server>
    <id>my-release</id>
    <username>admin</username>
    <password>admin</password>
  </server>
</servers>

在这里插入图片描述

八、打包上传

上传的项目 pom.xml 文件中需要设置 distributionManagement 标签,如下:

<distributionManagement>
    <repository>	<!-- release 版本上传用的仓库 -->
        <id>my-release</id>	<!-- server 的 id -->
        <url>http://localhost:8081/repository/my-release/</url>	<!-- 仓库的 URL -->
    </repository>
    <snapshotRepository>	<!-- snapshot 版本上传用的仓库 -->
        <id>my-snapshot</id>
        <url>http://localhost:8081/repository/my-snapshot/</url>
    </snapshotRepository>
</distributionManagement>

distributionManagement 有 repository 和 snapshotRepository,分别表示 release 和 snapshot 两个版本上传的两个仓库,上传到哪个仓库取决于项目的 version 版本号后面有没有 SNAPSHOT

在这里插入图片描述

如上图中这个简单的小项目,它的坐标是 com.mzz,版本是 1.0-SNAPSHOT

用命令 mvn deploy 构建项目并上传,看到 BUILD SUCCESS 就成功了

在这里插入图片描述

可以看出这个项目上传到了 my-snapshot 仓库,因为现在项目版本号是 1.0-SNAPSHOT,如果想上传到 my-release 仓库,只需去掉版本号后的 SNAPSHOT 或者将 SNAPSHOT 改成 RELEASE 即可

在模块间的继承关系中,在父模块中设置 distributionManagement 会继承给子模块

九、查看仓库

点击上方的方格按钮,再点击左侧的 Browse,在仓库列表中点击要查看的仓库名称即可

在这里插入图片描述在这里插入图片描述

十、修改中心仓库代理地址

修改中心仓库的代理地址为阿里云,点击 maven-central 仓库:

在这里插入图片描述

修改 Remote storage 为 https://maven.aliyun.com/repository/public,如下图:

在这里插入图片描述

到页面最下方 Save 保存即可

十一、修改端口号

nexus 默认的端口号是 8081,如果想要修改,在 sonatype-work\nexus3\etc 路径下,打开 nexus.properties 文件,修改 application-port 的值,取消注释即可:

在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值