Maven私服配置

437 阅读4分钟

~~本文已参与「新人创作礼」活动,一起开启掘金创作之路。~~

一、简介

私服也是远程仓库的一种。

个人方面:我们可以将我们自己的jar包上传私服,供自己和让人使用,若是没有私服,则都必须手动添加jar包到项目中,不仅麻烦还容易出错,使用私服后,就可以直接使用maven引入了。

公司方面:可以将这个私服当作代理,提高依赖下载速度,并且也可以管理公司内部的一些jar包

二、优点

  • 加速maven构件的下载速度
  • 节省宽带,加速项目构建速度
  • 方便部署自己的构件以供他人使用
  • 提高maven的稳定性,中央仓库需要本机能够访问外网,而如果采用私服的方式,只需要本机可以访问内网私服就可以了

三、常用的私服

Sonatype的Nexus

下载地址: help.sonatype.com/repomanager…

四、Nexus的安装启动

解压之后会产生两个文件目录nexus-3.19.1-01和sonatyp-work

cmd进入nexus-3.19.1-01/bin下,输入nexus.exe /run 启动私服

浏览器中打开http://localhost:8081/,进入如下页面

image-20220730194125502

右上角登录,用户名为admin,初始密码位于上面解压出来的第二个文件sonatyp-work的nexus3目录下admin.password文件中。

登录后要求重置密码,按要求完成设置后,进入如下界面:

image-20220730194200723

五、Nexus仓库分类

Nexus默认3中仓库类型:

  • 代理仓库
  • 宿主仓库
  • 仓库组

如图所示:

image-20220730194242672

代理仓库

代理仓库主要是让使用者通过代理仓库来间接访问外部的第三方远程仓库的,如通过代理仓库访问maven中央仓库、阿里的maven仓库等等。代理仓库会从被代理的仓库中下载构件,缓存在代理仓库中以供maven用户使用。

如下,添加一个阿里云的代理仓库。

image-20220730194316983

image-20220730194332908

image-20220730194351481

第一个红框:新建仓库名称,随便起

第二个红框:表示只下载Release版本,即稳定版本的jar

第三个红框:阿里云的maven仓库地址,仓库服务 (aliyun.com)

宿主仓库

用来存放我们自己的一些jar包,供自己和他人使用

仓库组

就是将前面提到的代理仓库、宿主仓库放到一起,当作一个仓库组(就包含这些资源的一个大仓库)使用,所有属于这些仓库的资源都属于这个仓库组的资源,使用时只需使用这一个仓库地址就可以获取到配置的所有仓库资源,配置界面如下:

image-20220730194535895

默认已将中央仓库maven-central和两个宿主仓库maven-releases(稳定版本)、maven-snapshots(快照版本)加入仓库组中,这里将前面新建的阿里云仓库也加入仓库中,放到maven-central前面,这里的作用就相当于中央仓库的一个镜像。

image-20220730194558665

六、从Nexus获取资源

前面也说了,这里的Nexus就是一个远程仓库,因此必须要知道它的地址,进入仓库界面,选择一个仓库,复制地址,如下,这里选择仓库组的地址,这样就能直接获取两个宿主仓库、阿里云仓库和中央仓库的所有资源。

image-20220730194731178

获取到地址和,不论是在settings文件中配置还是在pom文件中配置远程仓库,都必须在settings的server标签中配置nexus的用户名密码,且这里的id要与配置仓库是的id相同,否则无法映射

<server>
  <!-- 这里的id必须与设置远程仓库的那个id一样 -->
  <id>maven-nexus</id>
  <username>admin</username>
  <password>admin_pwd</password>
</server>

七、上传资源到Nexus

1、手动上传

准备好要上传的jar包,按如下提示操作

image-20220730194839072

image-20220730194905221

选择你的jar目录以及jar包类型,一般为jar

这里填写的group ID、Artifact ID、Version就是将来maven引用时的各个属性值。

注意:最后的Generate a POM file with these coordinates这个选项勾选上,其实不勾选也可以从私服下载到资源,但是maven依赖会报错找不到相应的pom文件,故这里最好勾选上

2、maven插件deploy上传

  1. 在项目的pom文件中加入如下内容,其中settings文件中的servers中必须要有id为release-nexus和snapshot-nexus的server,否则连接不上私服。

    <distributionManagement>
        <repository>
            <id>release-nexus</id>
            <url>http://localhost:8081/repository/maven-releases/</url>
            <name>nexus私服中宿主仓库->存放/下载稳定版本的构件</name>
        </repository>
        <snapshotRepository>
            <id>snapshot-nexus</id>
            <url>http://localhost:8081/repository/maven-snapshots/</url>
            <name>nexus私服中宿主仓库->存放/下载快照版本的构件</name>
        </snapshotRepository>
    </distributionManagement>
    
  2. 执行mvn deploy命令

    这时maven会自动将项目打包,并上传的指定的私服,若项目的版本中带有snapshot字样,那么会上传至http://localhost:8081/repository/maven-snapshots中,否则将项目的jar上传至http://localhost:8081/repository/maven-releases。

  3. 进入nexus中,浏览仓库资源,就会发现上传的项目jar包

    image-20220730195153463 image-20220730195210041