1. 什么是私服

Maven 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。一些无法从外部仓库下载到的构件,也能从本地上传到私服供其他人使用。

Maven 私服其实并不是 Maven 的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降低中央仓库负荷、节省外网带宽、以及提高项目稳定性等优点,使得私服在实际开发过程中得到了相当普遍地使用。建立了 Maven 私服后,当局域网内的用户需要某个构件时,会先请求本地仓库,若本地仓库不存在所需构件,则请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,再去请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。

2. Maven 仓库管理器 Nexus

2.1 什么是Nexus

Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。 Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。Nexus 分为开源版和专业版,其中开源版足以满足大部分 Maven 用户的需求

2.2 Nexus 仓库的类型

Nexus默认内置了很多仓库,这些仓库可以划分为3种类型,每种类型的仓库用于存放特定的jar包,具体说明如下:

  1. hosted:宿主仓库,部署自己的jar包到这个类型的仓库中,包括Releases和Snapshots两部分,Releases为公司内部发行版本仓库,Snapshots为公司内部测试版本仓库。
  2. proxy: 代理仓库,用于代理远程的公共仓库,如Maven中央仓库,用户连接私服,私服自动去中央仓库下载Jar包或者插件。
  3. group:仓库组,用来合并多个hosted/proxy仓库,通常用于配置自己的Maven连接仓库组。当我们下载jar包时,从仓库组中的每个仓库找一遍,找到后下载。

image.png

1710586648632-8430fc88-b320-4e83-a6ee-1167d069029b

2.3 如何搭建私服

  1. 下载Nexus

    1. 官网地址:https://help.sonatype.com/repomanager3/download
    2. image
  2. 安装Nexus

    1. 下载安装包后解压并进入到 nexus-3.66.0-02\bin目录下
    2. 双击nexus.exe没有反应,需要以管理员身份打开cmd窗口,输入命令: nexus /run 回车,需要等待一段时间,直到出现Started Sonatype Nexus OSS 3.66.0-02说明安装成功。
    3. image
    4. image
  3. 访问Nexus

    1. 访问地址:http://localhost:8081
    2. 端口号可以改变 , D:\DevTools\Nexus\nexus-3.66.0-02\etc目录下的nexus-default.properties文件中进行修改。
    3. 注意:如果浏览器访问一直转圈打不开页面,则在cmd窗口ctrl+c唤醒一下就可以打开了。
    4. image

3. Nexus私服的应用

3.1 登录

image.png
密码所在的文件:
image.png
image.png
image.png
image.png
点Browse观察
image.png

标头.jpg

3.2 设置仓库

  1. 创建仓库

image.png
image.png
image.png
image.png
image.png

  1. 将创建好的仓库添加到public组中。

image.png
image.png
image.png

标头.jpg

3.3 使用Nexus下载jar包

创建一个新的本地仓库,用来接收Nexus下载下来的jar包。
因为要使用Maven工具访问私服,所以settings.xml文件要修改。

  1. 本地仓库地址修改为新地址
1
<localRepository>E:\repository_nexus</localRepository>

image.png

  1. 设置标签为Nexus的maven-public库地址(仓库组)
1
2
3
4
5
6
<mirror>
<id>dljd-nexus</id>
<mirrorOf>central</mirrorOf>
<name>mynexus</name>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>

其中标签的地址复制maven-public库的地址。这个地址取代了中央仓库地址。我们所有的jar包下载都是从这个地址里找。它包含宿主库和代理库的所有地址。
image.png

标头.jpg

  1. 设置每次访问Nexus的用户名和密码,修改settings.xml文件中的标签
1
2
3
4
5
<server>
<id>dljd-nexus</id>
<username>admin</username>
<password>admin</password>
</server>

image.png

标头.jpg

  1. 打开Idea2023,确定是新的本地仓库地址

image.png
选择一个项目maven_01执行clean操作。image.png
观察本地仓库:
image.png
观察私服Nexus上的maven-public组
image.png

标头.jpg

3.4 使用Idea部署jar包到Nexus私服

私服Nexus是部署在局域网的,是全公司共享的仓库地址,每个团队都可以将已完成的功能或测试版本发布到私服供别人来使用。

  1. 打开要部署的项目的pom.xml文件,设置上传路径
1
2
3
4
5
6
7
8
9
10
<distributionManagement>
<repository>
<id>dljd-nexus</id>
<url>http://localhost:8081/repository/dljd-release/</url>
</repository>
<snapshotRepository>
<id>dljd-nexus</id>
<url>http://localhost:8081/repository/dljd-snapshot/</url>
</snapshotRepository>
</distributionManagement>

其中路径来自于私服dljd-snapshot.
image.png
image.png

  1. 运行deploy部署命令

image.png

  1. 观察私服对应仓库变化

release项目部署
image.png
snapshot项目部署
image.png
总结:整个Maven工具的应用就讲完了。其中一二三章是基础应用,四五六章是高级应用,工作时遇到的问题四五六章有解决方案,到时候再看也来得及。