Maven pom的distributionManagement配置方式
Maven pom的distributionManagement配置方式
distributionManagement的作用是"分發(fā)構(gòu)件至遠(yuǎn)程倉庫"。
mvn install 會將項目生成的構(gòu)件安裝到本地Maven倉庫,mvn deploy 用來將項目生成的構(gòu)件分發(fā)到遠(yuǎn)程Maven倉庫。
本地Maven倉庫的構(gòu)件只能供當(dāng)前用戶使用,在分發(fā)到遠(yuǎn)程Maven倉庫之后,所有能訪問該倉庫的用戶都能使用你的構(gòu)件。
我們需要配置POM的distributionManagement來指定Maven分發(fā)構(gòu)件的位置。
<distributionManagement>的作用:負(fù)責(zé)管理構(gòu)件的發(fā)布。這是一個環(huán)境變量。
1.構(gòu)件的發(fā)布
Maven項目的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項目可以通過該URL下載并引用當(dāng)前Maven項目的構(gòu)件。
<status> 當(dāng)前Maven項目的狀態(tài)。
可用的狀態(tài)有以下幾種:
none:未指明狀態(tài),默認(rèn)值converted:該Maven項目的構(gòu)件已經(jīng)被轉(zhuǎn)換為兼容Maven 2partner:該Maven項目的構(gòu)件保持與另一個庫的Maven版本一致deployed:該Maven項目的構(gòu)件是通過Maven 2或Maven 3發(fā)布的,最常用的值verified:該Maven項目的構(gòu)件已經(jīng)被驗證過
2.推送倉庫設(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)生一個唯一性的version number還是使用address里的其中version部分.(true or false)
- <id> 庫的id
- <name> 庫的名稱
- <url> 庫的url
- <layout> default或者legacy
2.2 <distributionManagement> 中的 <repository> 和 <snapshotsrepository>各自的含義
maven倉庫分為兩種 release發(fā)布倉庫(<repository>) 和 snapshot快照倉庫(<snapshotsrepository>)。
snapshot快照倉庫用于保存開發(fā)過程中的不穩(wěn)定版本。release正式倉庫用來保存穩(wěn)定的發(fā)行版本。
定義一個組件/模塊為快照版本 只需要在pom文件中的該模板的版本號后面加上 -SNAPSHOT就可以了。 注意:必須是大寫。
maven會根據(jù)模塊的版本號(pom文件中的<version>版本號</version>)中是否帶有-SNAPSHOT來判斷這個是快照版本還是正式版本。
如果是快照版本:
- 在mvn deploy時會自動發(fā)布到快照版本庫中。
- 而使用快照版本的模塊,在不更改版本號的情況下,直接編譯打包時,maven會自動從鏡像服務(wù)器上下載最新的快照版本。
如果是正式發(fā)布版本:
- 那么在mvn deploy時會自動發(fā)布到正式版本庫中。
- 而使用正式版本的模塊,在不更改版本號的情況下,編譯打包時,如果本地已經(jīng)存在該版本的模塊則使用本地的而不是主動去鏡像服務(wù)器上下載。
3.部署網(wǎng)站和文檔
<distributionManagement>的<site>配置,除了部署當(dāng)前Maven項目的構(gòu)件,還可以部署當(dāng)前Maven項目的網(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)件
隨著一個Maven項目的發(fā)展壯大,該Maven項目的構(gòu)件可能需要重新發(fā)布到新的庫。
<relocation>可以將當(dāng)前Maven項目以新的構(gòu)件的形式發(fā)布到另一個庫。
<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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題
這篇文章主要介紹了解決java.lang.ClassCastException的java類型轉(zhuǎn)換異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
SpringBoot整合Mybatis-plus的具體過程使用
這篇文章主要介紹了SpringBoot?整合mybatis+mybatis-plus的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
SpringCloud微服務(wù)調(diào)用丟失請求頭的問題及解決方案
在Spring Cloud 中微服務(wù)之間的調(diào)用會用到Feign,但是在默認(rèn)情況下,Feign 調(diào)用遠(yuǎn)程服務(wù)存在Header請求頭丟失問題,下面給大家分享SpringCloud微服務(wù)調(diào)用丟失請求頭的問題及解決方案,感興趣的朋友一起看看吧2024-02-02
在IDEA中創(chuàng)建父工程和子模塊module的方法步驟
這篇文章主要介紹了在IDEA中創(chuàng)建父工程和子模塊module的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02
基于Springboot+Vue實現(xiàn)的在線答題闖關(guān)系統(tǒng)全過程
這篇文章主要介紹了基于Springboot+Vue實現(xiàn)的在線答題闖關(guān)系統(tǒng)的相關(guān)資料,文中包括前端Vue.js、后端SpringBoot及MySQL數(shù)據(jù)庫的使用,系統(tǒng)功能涵蓋順序出題、體型練習(xí)、隨機(jī)出題、錯題本、收藏題和答題統(tǒng)計等,需要的朋友可以參考下2024-12-12
Spring Boot集成教程之異步調(diào)用Async
在項目中,當(dāng)訪問其他人的接口較慢或者做耗時任務(wù)時,不想程序一直卡在耗時任務(wù)上,想程序能夠并行執(zhí)行,我們可以使用多線程來并行的處理任務(wù),也可以使用spring提供的異步處理方式@Async。需要的朋友們下面來一起看看吧。2018-03-03

