Maven 将 jar 包上传到私服 nexus
一、<distributionManagement>
1.1、<distributionManagement>的作用:负责管理构件的发布,这是一个环境变量。
- <downloadUrl> URL </downloadUrl>:其它的Maven项目可以通过该URL下载并引用当前Maven项目的构件。
- <status>:当前Maven项目的状态,可用的状态有以下几种,并且这个值不是人为设置的。而是Maven自动设置的。
- none:未指明状态,默认值
- converted:该Maven项目的构件已经被转换为兼容Maven 2
- partner:该Maven项目的构件保持与另一个库的Maven版本一致
- deployed:该Maven项目的构件是通过Maven 2或Maven 3发布的,最常用的值
- verified:该Maven项目的构件已经被验证过
1.2、<distributionManagement>中的<repository>
- <uniqueVersion>:指定是否产生一个唯一性的version number还是使用address里的其中version部分。(true or false)
- <id>:库的id
- <name>:库的名称
- <url>:库的url
- <layout>:default或者legacy
1.3、<distributionManagement> 中的 <repository> && <snapshotsrepository>各自的含义
-
maven仓库分为两种 release发布仓库(<repository>) 和 snapshot快照仓库(<snapshotsrepository>)
-
snapshot快照仓库用于保存开发过程中的不稳定版本
-
release正式仓库用来保存稳定的发行版本
-
定义一个组件/模块为快照版本 只需要在pom文件中的该模板的版本号后面加上 -SNAPSHOT就可以了. 注意:必须是大写
-
maven会根据模块的版本号(pom文件中的<version>版本号</version>)中是否带有-SNAPSHOT来判断这个是快照版本还是正式版本。
-
如果是快照版本
-
在mvn deploy时会自动发布到快照版本库中。
-
而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。
-
如果是正式发布版本
-
那么在mvn deploy时会自动发布到正式版本库中。
-
而使用正式版本的模块,在不更改版本号的情况下,编译打包时,如果本地已经存在该版本的模块则使用本地的而不是主动去镜像服务器上下载。
二、将 jar 包上传到私服 nexus
nexus 私服搭建这里就不介绍了,没搭建过的朋友可以参考
windows 环境搭建:https://blog.csdn.net/wsjzzcbq/article/details/89071625
笔者这里已经搭建完成,nexus 私服地址是:http://192.168.0.140:8082/,下面会用到
2.1、配置 settings.xml 文件
在本地 maven 的 settings.xml 文件中,<servers> 标签下添加 server 配置
<server>
<id>wsjz-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>wsjz-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
- username 和 password 是私服 nexus 的
- id 是随意命名的,但要和下面使用的地方保持一致
2.2、配置上传的资源库地址
给需要上传到私服的项目,添加资源库地址
<distributionManagement>
<repository>
<id>wsjz-releases</id>
<name>Releases Repository</name>
<url>http://192.168.0.140:8082/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>wsjz-snapshots</id>
<name>Snapshot Repository</name>
<url>http://192.168.0.140:8082/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- 这里的 id 要和上面的 server 的 id 保持一致
- name 随意写
- url 地址是 nexus 私服上的 maven-releases 和 maven-snapshots 的地址,可以登录 nexus 私服copy
2.3、上传测试
- 新建 maven 项目
- 在 pom 文件中添加上面的资源库地址
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wsjz</groupId>
<artifactId>maven-project-learn</artifactId>
<version>0.0.1-SNAPSHOT</version>
<distributionManagement>
<repository>
<id>wsjz-releases</id>
<name>Releases Repository</name>
<url>http://192.168.0.140:8082/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>wsjz-snapshots</id>
<name>Snapshot Repository</name>
<url>http://192.168.0.140:8082/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
-
在项目根目录打开控制台
2.3.1、上传到 maven-snapshots(快照库)
执行命令 mvn deploy 将当前SNAPSHOT(快照版)上传到私服 maven-snapshots
mvn deploy
登录私服查看
快照版上传成功
2.3.2、上传到 maven-releases(发布库)
修改项目版本为 0.0.1
执行命令 mvn deploy
mvn deploy
登录私服查看
发布版上传成功
登录私服使用web管理界面直接上传
2.4、下载上传到私服的 jar 包
下载上传到私服的 jar 包
新建 maven 项目
在 pom.xml 文件中添加资源库配置
<repositories>
<repository>
<id>senyue</id>
<name>senyue respository</name>
<url>http://192.168.0.140:8082/repository/maven-public/</url>
</repository>
</repositories>
添加已上传到私服的依赖
<dependency>
<groupId>com.wsjz</groupId>
<artifactId>maven-project-learn</artifactId>
<version>0.0.1</version>
</dependency>
更新 maven 项目下载依赖
查看是否下载成功
已成功下载
至此完