一、<distributionManagement>
1.1、<distributionManagement>的作用:負(fù)責(zé)管理構(gòu)件的發(fā)布,這是一個(gè)環(huán)境變量。
- <downloadUrl> URL </downloadUrl>:其它的Maven項(xiàng)目可以通過該URL下載并引用當(dāng)前Maven項(xiàng)目的構(gòu)件。
- <status>:當(dāng)前Maven項(xiàng)目的狀態(tài),可用的狀態(tài)有以下幾種,并且這個(gè)值不是人為設(shè)置的。而是Maven自動(dòng)設(shè)置的。
- none:未指明狀態(tài),默認(rèn)值
- converted:該Maven項(xiàng)目的構(gòu)件已經(jīng)被轉(zhuǎn)換為兼容Maven 2
- partner:該Maven項(xiàng)目的構(gòu)件保持與另一個(gè)庫的Maven版本一致
- deployed:該Maven項(xiàng)目的構(gòu)件是通過Maven 2或Maven 3發(fā)布的,最常用的值
- verified:該Maven項(xiàng)目的構(gòu)件已經(jīng)被驗(yàn)證過
1.2、<distributionManagement>中的<repository>
- <uniqueVersion>:指定是否產(chǎn)生一個(gè)唯一性的version number還是使用address里的其中version部分。(true or false)
- <id>:庫的id
- <name>:庫的名稱
- <url>:庫的url
- <layout>:default或者legacy
1.3、<distributionManagement> 中的 <repository> && <snapshotsrepository>各自的含義
maven倉庫分為兩種 release發(fā)布倉庫(<repository>) 和 snapshot快照倉庫(<snapshotsrepository>)
snapshot快照倉庫用于保存開發(fā)過程中的不穩(wěn)定版本
release正式倉庫用來保存穩(wěn)定的發(fā)行版本
定義一個(gè)組件/模塊為快照版本 只需要在pom文件中的該模板的版本號(hào)后面加上 -SNAPSHOT就可以了. 注意:必須是大寫
maven會(huì)根據(jù)模塊的版本號(hào)(pom文件中的<version>版本號(hào)</version>)中是否帶有-SNAPSHOT來判斷這個(gè)是快照版本還是正式版本。
如果是快照版本
在mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到快照版本庫中。
而使用快照版本的模塊,在不更改版本號(hào)的情況下,直接編譯打包時(shí),maven會(huì)自動(dòng)從鏡像服務(wù)器上下載最新的快照版本。
如果是正式發(fā)布版本
那么在mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到正式版本庫中。
而使用正式版本的模塊,在不更改版本號(hào)的情況下,編譯打包時(shí),如果本地已經(jīng)存在該版本的模塊則使用本地的而不是主動(dòng)去鏡像服務(wù)器上下載。
二、將 jar 包上傳到私服 nexus
nexus 私服搭建這里就不介紹了,沒搭建過的朋友可以參考
windows 環(huán)境搭建:https://blog.csdn.net/wsjzzcbq/article/details/89071625
筆者這里已經(jīng)搭建完成,nexus 私服地址是:http://192.168.0.140:8082/,下面會(huì)用到
2.1、配置 settings.xml 文件
在本地 maven 的 settings.xml 文件中,<servers> 標(biāo)簽下添加 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、配置上傳的資源庫地址
給需要上傳到私服的項(xiàng)目,添加資源庫地址
<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、上傳測(cè)試
- 新建 maven 項(xiàng)目

- 在 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>
-
在項(xiàng)目根目錄打開控制臺(tái)
2.3.1、上傳到 maven-snapshots(快照庫)
執(zhí)行命令 mvn deploy 將當(dāng)前SNAPSHOT(快照版)上傳到私服 maven-snapshots
mvn deploy

登錄私服查看

快照版上傳成功
2.3.2、上傳到 maven-releases(發(fā)布庫)
修改項(xiàng)目版本為 0.0.1

執(zhí)行命令 mvn deploy
mvn deploy

登錄私服查看

發(fā)布版上傳成功
登錄私服使用web管理界面直接上傳

2.4、下載上傳到私服的 jar 包
下載上傳到私服的 jar 包
新建 maven 項(xiàng)目
在 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 項(xiàng)目下載依賴
查看是否下載成功

已成功下載
至此完
