一、概述
1:简介
Maven私服(Repository Manager)是一个用于管理和分发构建制品(如JAR、WAR、POM文件等)的服务器。它允许团队在本地搭建一个中央存储库,用于保存和分享项目构建所需的依赖项。一些常见的Maven私服产品包括Nexus、Artifactory和Apache Archiva。
2:建立私服后依赖查找和下载逻辑
第一步:请求本地仓库
当用户需要某个构件时,首先会检查本地仓库是否已经存在所需构建。
如果本地仓库中已经有所需构件,系统将直接从本地仓库获取,无需进行远程请求。
第二步:请求Maven私服
如果本地仓库中不存在所需构件,用户的请求将转向Maven私服。
Maven私服会检查自身的仓库,如果存在所需构件,将其下载到本地仓库,并会返给用户。
第三步:请求外部远程仓库(远程中央仓库等)
如果Maven私服也没有所需构件,系统将尝试从外部的远程仓库(通常是中央仓库)中获取。
如果外部远程仓库存在所需构件,Mavem私服会将该构件下载并缓存到自身的仓库中,然后将构件返回给用户。
如果外部远程仓库中也不存在所需构件,Maven将报错,指示找不到所需的依赖项。
参考图如下

3:Maven私服的优势
加速构建过程: Maven 私服允许团队在本地搭建一个中央存储库,使得构建时可以优先从局域网内的私服获取依赖项,从而减少对外部远程仓库的依赖,加速构建过程。
降低对外部网络的依赖性: 私服允许团队在没有互联网连接或网络较差的情况下进行构建。依赖项的本地缓存和私服的存在减少了对外部网络的依赖性,提高了项目的可靠性。
统一依赖管理: 通过私服,团队可以统一管理和控制项目所需的依赖项版本,确保整个团队使用相同的构建制品,降低了版本冲突和不一致性的可能性。
安全性: 私服可以提供访问控制和安全认证机制,限制对仓库的访问,确保只有授权的人员能够发布和获取构建制品。这有助于保护项目的代码和依赖项的安全性。
本地镜像和缓存: 私服可以缓存外部远程仓库中的构建制品,降低了从外部仓库获取依赖项的延迟。此外,私服还可以配置为本地镜像,提供更快速的下载。
离线部署: Maven 私服支持离线部署,使得在没有互联网连接的环境中也能够构建和部署项目,适用于一些安全要求较高或隔离网络的场景。
4:Maven私服常用产品
①: Nexus(当前最流行、使用最广泛):
Nexus 是 Sonatype 公司推出的一款流行的 Maven 私服产品。
提供强大的仓库管理和安全性功能。
支持多种仓库格式,包括Maven、npm、Docker等。
②: Artifactory:
Artifactory是JFrog公司开发的另一款领先的构建制品仓库管理工具。
支持各种包括 Maven、Gradle、npm 等的构建工具。
具有高度可伸缩性和灵活的部署选项。
③: Apache Archiva:
Apache Archiva 是由 Apache 软件基金会提供的开源 Maven 私服工具。
提供基本的仓库管理功能,适用于小型项目或对简单配置有需求的团队。
二、Nexus下载、安装、初始设置
1:下载
下载地址:https://help.sonatype.com/en/download-archives---repository-manager-3.html
打开后如下图:

网站下载有时候会打不开以下是一个网盘下载地址大家根据情况自行下载
链接:https://pan.baidu.com/s/1fYJdSehWDLNqGdiSCuhTCQ
提取码:812g
下载完成之后是一个压缩包,解压之后打开是下图两个文件

2:目录介绍
总目录
|-----------------|-------------------------------------------------------------------------------------------|
| 文件夹 | 作用 |
| nexus-3.61.0-02 | 安装目录。此目录包含Nexus Repository Manager应用程序和所有必需的附加组件,如Java库和配置文件。默认情况下,目录名称使用nexus- ,并附加版本名称。 |
| sonatype-work | 数据目录。此目录包含存储库管理器存储和管理的所有存储库、组件和其他数据。相对于安装目录,数据目录的默认位置是../sonatype-work/nexus3 |
安装目录(nexus-3.61.0-02)下的目录及文件说明,如下表所示
|------------------------|------------------------------|
| 目录文件 | 作用 |
| LICENSE.txt和NOTICE.txt | 这些文件包含有关许可证和版权声明的法律细节 |
| bin/ | 此目录包含Nexus启动脚本本身以及与启动相关的配置文件 |
| etc/ | 此目录包含配置文件 |
| lib/ | 此目录包含与Apache Karaf相关的二进制库 |
| public/ | 此目录包含应用程序的公共资源 |
| system/ | 此目录包含构成应用程序的所有组件和插件 |
数据目录内容对每个实例都是独一无二的,包括包含存储库管理器使用的所有组件、存储库、配置和其他持久数据的子目录。默认情况下,数据目录位于../sonatype-work/nexus3。
数据目录(sonatype-work)下的目录及文件说明,如下表所示。
|----------------|-----------------------------------------------------------------------------------|
| 目录文件 | 作用 |
| blobs/ | 未定义绝对存储路径的所有基于文件系统的blob存储的父目录。例如,默认blob存储将位于../sonatype-work/nexus3/blobs/default |
| cache/ | 此目录包含当前缓存的Karaf捆绑包的信息。 |
| db/ | 此目录包含OrientDB数据库,这些数据库是存储库管理器元数据的主要存储。 |
| elasticsearch/ | 此目录包含当前配置的Elasticsearch状态。 |
| etc/ | 此目录包含存储库管理器的主要运行时配置和自定义。 |
|---------------|-------------------------------------------------------------------------------|
| health-check/ | 此目录包含来自存储库健康检查功能的缓存报告。 |
| keystores/ | 这包含用于识别存储库管理器的自动生成密钥。 |
| log/ | 此目录和子目录包含活动和存档的应用程序日志文件。 |
| log/audit/ | 启用审计后,审计日志将写入此目录 |
| log/tasks/ | 任务可以为每次执行生成日志,以便更好地检查该任务的执行情况。这些日志文件包含的消息通常过于嘈杂,无法放入主应用程序日志中。日志由任务内部名称和时间戳命名。 |
| tmp/ | 此目录用于临时存储。 |
3:启动nexus
进入到你安装的目录bin目录下,如下图我的目录

点击上方路径栏:在里面输入cmd如下图,然后回车


输入启动命令:nexus /run,如下图

点击回车,等待一段时间后出现下图表示启动成功:

4:登录、初始设置
4.1:登录
打开浏览器,在浏览器中输入http://localhost:8081/,或者127.0.0.1:8081,如下图所示

点击右侧sign in 进行登录,用户名admin,默认密码admin123,也可在以下文件中查找


4.2:初始设置
登录完成之后会让修改密码修改即可,如下图

三、Nexus仓库介绍
1:仓库

2:仓库类型说明
|--------|--------------------------|
| 仓库类型 | 说明 |
| proxy | 某个远程仓库的代理 |
| group | 存放:通过 Nexus 获取的第三方 jar 包 |
| hosted | 存放:通过 Nexus 获取的第三方 jar 包 |
3:仓库名称&说明
|-----------------|-------------------------------------------------|
| 仓库名称 | 说明 |
| maven-central | Nexus 对 Maven 中央仓库的代理 |
| maven-public | Nexus 默认创建,供开发人员下载使用的组仓库 |
| maven-releases | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本 |
| maven-snapshots | Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本 |
4:初始状态仓库为空

四、通过Nexus下载jar包
1:将中央仓库地址修改为阿里云镜像地址
为了加快国内下载速度
1.1:选择要修改的仓库

1.2:修改仓库地址
修改地址为阿里云镜像地址:
http://maven.aliyun.com/nexus/content/groups/public/

2:添加自己的阿里云代理仓库
第一步:

第二步:

第三步:

输入名字地址,其它位置默认,点击最下方的创建即可。
第四步:


3:修改自己maven的仓库地址配置
1:找到自己的maven的位置并找到conf下的settings.xml,例如我的位置在
D:\work\anzhuangruanjian\apache-maven-3.6.3\conf下面

打开后修改以下内容:

其中url在下图获取
然后再添加用户名密码:用户名密码为nexus的用户名密码

测试:在maven工程中执行maven命令
mvn clean compile
部分下载日志如下图:
