【Maven】008-Maven 私服搭建与使用
文章目录
- 【Maven】008-Maven 私服搭建与使用
- 一、概述
- 1、简介
- 2、建立私服后依赖查找和下载逻辑
- 第一步:请求本地仓库
- 第二步:请求 Maven 私服
- 第三步:请求外部远程仓库(远程中央仓库等)
- 参考图
- 3、Maven 私服的优势
- 4、Maven 私服常用的产品
- 二、Nexus 下载、安装、初始设置
- 1、下载
- 地址
- 目标
- 2、安装
- 第一步:解压到一个目录
- 第二步:启动
- 第三步:访问 `http://localhost:8081/`
- 3、初始设置
- 登录
- 根据提示设置新密码
- 禁用匿名登录
- 初始化完成后
- 三、Nexus 上的仓库
- 1、仓库
- 2、仓库类型&说明
- 3、仓库名称&说明
- 4、初始状态仓库内为空
- 四、通过 Nexus 下载 jar 包
- 1、将中央仓库地址设置为阿里云镜像地址
- 第一步:选择要修改的仓库
- 第二步:修改地址为阿里云镜像地址
- 第三步:保存配置
- 2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址
- 第一步:拷贝自己的私服仓库地址
- 第二步:修改本机 Maven 配置的阿里云镜像地址
- 第三步:添加访问用户名密码
- 3、通过 Nexus 下载 jar 包
- 第一步:修改本机 Maven 仓库地址
- 第二步:在 Maven 工程下执行 Maven 命令
- 第三步:查看私服仓库
- 五、将 jar 包部署到 Nexus
- 1、Maven 工程中配置
- 2、执行部署命令
- 执行日志
- 私服
- 六、引用别人部署的 jar 包
- 1、Maven 工程中配置
- 2、打包日志
一、概述
1、简介
Maven私服(Repository Manager)是一个用于管理和分发构建制品(如JAR、WAR、POM文件等)的服务器。它允许团队在本地搭建一个中央存储库,用于保存和分享项目构建所需的依赖项。一些常见的Maven私服产品包括 Nexus、Artifactory 和 Apache Archiva 。
2、建立私服后依赖查找和下载逻辑
第一步:请求本地仓库
- 当用户需要某个构件时,首先会检查本地仓库是否已经存在所需构件。
- 如果本地仓库中已经有所需构件,系统将直接从本地仓库获取,无需进行远程请求。
第二步:请求 Maven 私服
- 如果本地仓库中不存在所需构件,用户的请求将转向 Maven 私服。
- Maven 私服会检查自身的仓库,如果存在所需构件,将其下载到本地仓库,并返回给用户。
第三步:请求外部远程仓库(远程中央仓库等)
- 如果 Maven 私服也没有所需构件,系统将尝试从外部的远程仓库(通常是中央仓库)中获取。
- 如果外部远程仓库存在所需构件,Maven 私服会将该构件下载并缓存到自身的仓库中,然后将构件返回给用户。
- 如果外部远程仓库中也不存在所需构件,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/repomanager3/product-information/download
目标
2、安装
第一步:解压到一个目录
第二步:启动
使用管理员身份打开 CMD ,切换到 bin 目录。
命令:
- 安装:nexus.exe /install bm-maven
- 启动:nexus.exe /start bm-maven
- 停止:nexus.exe /stop bm-maven
- 卸载:nexus.exe /uninstall bm-maven
第三步:访问 http://localhost:8081/
3、初始设置
登录
用户名:admin
密码:(在 Nexus\sonatype-work\nexus3\admin.password )
根据提示设置新密码
禁用匿名登录
初始化完成后
三、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、将中央仓库地址设置为阿里云镜像地址
为了加快国内下载速度!
第一步:选择要修改的仓库
第二步:修改地址为阿里云镜像地址
http://maven.aliyun.com/nexus/content/groups/public/
第三步:保存配置
2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址
第一步:拷贝自己的私服仓库地址
第二步:修改本机 Maven 配置的阿里云镜像地址
第三步:添加访问用户名密码
我们设置了禁止匿名访问!
这里需要格外注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。
3、通过 Nexus 下载 jar 包
第一步:修改本机 Maven 仓库地址
因为原本的仓库里面可能已经有很多内容了,为了直观,新建一个本地空仓库(一个空文件夹),让 Maven 直接向私服获取依赖!
第二步:在 Maven 工程下执行 Maven 命令
mvn clean compile
部分下载过程日志:
......
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar (217 kB at 42 kB/s)
Downloading from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/log4j/log4j/1.2.12/log4j-1.2.12.jar (358 kB at 63 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar (45 kB at 7.9 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar (134 kB at 23 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar (121 kB at 21 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/com/google/collections/google-collections/1.0/google-collections-1.0.jar (640 kB at 89 kB/s)
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo1\target\classes
[INFO]
[INFO] ---------------------------< com.zibo:demo2 >---------------------------
[INFO] Building demo2 1.0-SNAPSHOT [3/3]
[INFO] from demo2\pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ demo2 ---
[INFO] Deleting D:\MyFile\IDEAProjects\mvn-demo\demo2\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo2 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo2\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for mvn-demo 1.0-SNAPSHOT:
[INFO]
[INFO] mvn-demo ........................................... SUCCESS [ 8.613 s]
[INFO] demo1 .............................................. SUCCESS [01:22 min]
[INFO] demo2 .............................................. SUCCESS [ 0.079 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:31 min
[INFO] Finished at: 2024-01-14T13:26:44+08:00
[INFO] ------------------------------------------------------------------------
第三步:查看私服仓库
五、将 jar 包部署到 Nexus
如出现问题,请调整下面配置。
1、Maven 工程中配置
注意:这里 repository 和 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。
<distributionManagement>
<!-- 部署正式版本(Release):mvn clean deploy -->
<repository>
<id>zibo-nexus-maven</id>
<name>zibo nexus maven releases</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<!-- 部署快照版本(Snapshot):mvn clean deploy -DrepositoryId=zibo-nexus-maven -->
<snapshotRepository>
<id>zibo-nexus-maven</id>
<name>zibo nexus maven</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
2、执行部署命令
mvn deploy
执行日志
私服
六、引用别人部署的 jar 包
1、Maven 工程中配置
<dependencies>
<dependency>
<groupId>com.zibo</groupId>
<artifactId>demo1</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>zibo-nexus-maven</id>
<name>zibo nexus maven</name>
<url>http://localhost:8081/repository/maven-releases/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>