Maven pom的distributionManagement配置方式
Maven pom的distributionManagement配置方式
distributionManagement的作用是"分發(fā)構(gòu)件至遠(yuǎn)程倉(cāng)庫(kù)"。
mvn install 會(huì)將項(xiàng)目生成的構(gòu)件安裝到本地Maven倉(cāng)庫(kù),mvn deploy 用來(lái)將項(xiàng)目生成的構(gòu)件分發(fā)到遠(yuǎn)程Maven倉(cāng)庫(kù)。
本地Maven倉(cāng)庫(kù)的構(gòu)件只能供當(dāng)前用戶使用,在分發(fā)到遠(yuǎn)程Maven倉(cāng)庫(kù)之后,所有能訪問(wèn)該倉(cāng)庫(kù)的用戶都能使用你的構(gòu)件。
我們需要配置POM的distributionManagement來(lái)指定Maven分發(fā)構(gòu)件的位置。
<distributionManagement>的作用:負(fù)責(zé)管理構(gòu)件的發(fā)布。這是一個(gè)環(huán)境變量。
1.構(gòu)件的發(fā)布
Maven項(xiàng)目的POM中,環(huán)境配置<distributionManagement>負(fù)責(zé)管理構(gòu)件的發(fā)布。
<distributionManagement> ... <downloadUrl>http://jcat.ericsson.org/my-project</downloadUrl> <status>deployed</status> </distributionManagement>
<downloadUrl> URL </downloadUrl> 其它的Maven項(xiàng)目可以通過(guò)該URL下載并引用當(dāng)前Maven項(xiàng)目的構(gòu)件。
<status> 當(dāng)前Maven項(xiàng)目的狀態(tài)。
可用的狀態(tài)有以下幾種:
none
:未指明狀態(tài),默認(rèn)值converted
:該Maven項(xiàng)目的構(gòu)件已經(jīng)被轉(zhuǎn)換為兼容Maven 2partner
:該Maven項(xiàng)目的構(gòu)件保持與另一個(gè)庫(kù)的Maven版本一致deployed
:該Maven項(xiàng)目的構(gòu)件是通過(guò)Maven 2或Maven 3發(fā)布的,最常用的值verified
:該Maven項(xiàng)目的構(gòu)件已經(jīng)被驗(yàn)證過(guò)
2.推送倉(cāng)庫(kù)設(shè)置(常用)
2.1 <distributionManagement>中的<repository> <snapshotRepository>
<distributionManagement> <repository> <uniqueVersion>false</uniqueVersion> <id>corp1</id> <name>Corporate Repository</name> <url>scp://repo/maven2</url> <layout>default</layout> </repository> <snapshotRepository> <uniqueVersion>true</uniqueVersion> <id>propSnap</id> <name>Propellors Snapshots</name> <url>sftp://propellers.net/maven</url> <layout>legacy</layout> </snapshotRepository> ... </distributionManagement>
- <uniqueVersion>指定是否產(chǎn)生一個(gè)唯一性的version number還是使用address里的其中version部分.(true or false)
- <id> 庫(kù)的id
- <name> 庫(kù)的名稱
- <url> 庫(kù)的url
- <layout> default或者legacy
2.2 <distributionManagement> 中的 <repository> 和 <snapshotsrepository>各自的含義
maven倉(cāng)庫(kù)分為兩種 release發(fā)布倉(cāng)庫(kù)(<repository>) 和 snapshot快照倉(cāng)庫(kù)(<snapshotsrepository>)。
snapshot
快照倉(cāng)庫(kù)用于保存開(kāi)發(fā)過(guò)程中的不穩(wěn)定版本。release
正式倉(cāng)庫(kù)用來(lái)保存穩(wěn)定的發(fā)行版本。
定義一個(gè)組件/模塊為快照版本 只需要在pom文件中的該模板的版本號(hào)后面加上 -SNAPSHOT就可以了。 注意:必須是大寫。
maven會(huì)根據(jù)模塊的版本號(hào)(pom文件中的<version>版本號(hào)</version>)中是否帶有-SNAPSHOT來(lái)判斷這個(gè)是快照版本還是正式版本。
如果是快照版本:
- 在mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到快照版本庫(kù)中。
- 而使用快照版本的模塊,在不更改版本號(hào)的情況下,直接編譯打包時(shí),maven會(huì)自動(dòng)從鏡像服務(wù)器上下載最新的快照版本。
如果是正式發(fā)布版本:
- 那么在mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到正式版本庫(kù)中。
- 而使用正式版本的模塊,在不更改版本號(hào)的情況下,編譯打包時(shí),如果本地已經(jīng)存在該版本的模塊則使用本地的而不是主動(dòng)去鏡像服務(wù)器上下載。
3.部署網(wǎng)站和文檔
<distributionManagement>的<site>配置,除了部署當(dāng)前Maven項(xiàng)目的構(gòu)件,還可以部署當(dāng)前Maven項(xiàng)目的網(wǎng)站和文檔。
示例如下:
<distributionManagement> ... <site> <id>mojo.website</id> <name>Mojo Website</name> <url>scp://beaver.codehaus.org/home/projects/mojo/public_html/</url> </site> ... </distributionManagement>
4.重命名構(gòu)件
隨著一個(gè)Maven項(xiàng)目的發(fā)展壯大,該Maven項(xiàng)目的構(gòu)件可能需要重新發(fā)布到新的庫(kù)。
<relocation>可以將當(dāng)前Maven項(xiàng)目以新的構(gòu)件的形式發(fā)布到另一個(gè)庫(kù)。
<distributionManagement> ... <relocation> <groupId>org.apache</groupId> <artifactId>my-project</artifactId> <version>1.0</version> <message>We have moved the Project under Apache</message> </relocation> ... </distributionManagement>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java繼承的問(wèn)題引導(dǎo)和測(cè)試代碼
這篇文章主要介紹了Java繼承的問(wèn)題引導(dǎo)和測(cè)試代碼,涉及繼承的概念,合成的語(yǔ)法等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。2021-08-08Java 如何讀取Excel格式xls、xlsx數(shù)據(jù)工具類
這篇文章主要介紹了Java 如何讀取Excel格式xls、xlsx數(shù)據(jù)工具類的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了解決feign微服務(wù)間的文件上傳報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06詳談spring中bean注入無(wú)效和new創(chuàng)建對(duì)象的區(qū)別
這篇文章主要介紹了spring中bean注入無(wú)效和new創(chuàng)建對(duì)象的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02淺析如何在SpringBoot中實(shí)現(xiàn)數(shù)據(jù)脫敏
脫敏是指在不改變?cè)瓟?shù)據(jù)結(jié)構(gòu)的前提下,通過(guò)某種方式處理數(shù)據(jù),使數(shù)據(jù)不能直接暴露用戶的真實(shí)信息,下面我們就來(lái)看看SpringBoot中實(shí)現(xiàn)數(shù)據(jù)脫敏的具體方法吧2024-03-03劍指Offer之Java算法習(xí)題精講數(shù)組與字符和等差數(shù)列
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03Spring Boot對(duì)Future模式的支持詳解
這篇文章主要給大家介紹了關(guān)于Spring Boot對(duì)Future模式的支持的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧2019-01-01