maven的pom.xml中repositories和distributionManagement使用
repositories 遠(yuǎn)程倉(cāng)庫(kù)配置
在maven中pom.xml是Maven進(jìn)行工作的主要配置文件
它的作用包括:配置Maven項(xiàng)目中需要使用的遠(yuǎn)程倉(cāng)庫(kù),Maven項(xiàng)目的資源依賴關(guān)系等。
其中pom是Project Object Model(項(xiàng)目對(duì)象模型)的簡(jiǎn)稱。
在pom.xml中repositories標(biāo)簽的作用是用來(lái)配置maven項(xiàng)目的遠(yuǎn)程倉(cāng)庫(kù)。
示例如下:
<repository>
<id>nexus</id><!--遠(yuǎn)程倉(cāng)庫(kù)唯一標(biāo)識(shí)符 -->
<name>Private Repository</name><!--描述 -->
<url><!--遠(yuǎn)程倉(cāng)庫(kù)url --></url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
我們先看一下的配置,你可以在它下面添加多個(gè) ,每個(gè)都有它唯一的ID,一個(gè)描述性的name,以及最重要的,遠(yuǎn)程倉(cāng)庫(kù)的url。
此外,true告訴Maven可以從這個(gè)倉(cāng)庫(kù)下載releases版本的構(gòu)件,而false告訴Maven不要從這個(gè)倉(cāng)庫(kù)下載snapshot版本的構(gòu)件。
禁止從公共倉(cāng)庫(kù)下載snapshot構(gòu)件是推薦的做法,因?yàn)檫@些構(gòu)件不穩(wěn)定,且不受你控制,你應(yīng)該避免使用。
當(dāng)然,如果你想使用局域網(wǎng)內(nèi)組織內(nèi)部的倉(cāng)庫(kù),你可以激活snapshot的支持
layout:用于定位和排序構(gòu)件的倉(cāng)庫(kù)布局類型-可以是default(默認(rèn))或者legacy(遺留)。
Maven 2為其倉(cāng)庫(kù)提供了一個(gè)默認(rèn)的布局;然而,Maven 1.x有一種不同的布局。
我們可以使用該元素指定布局是default(默認(rèn))還是legacy(遺留)。
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的來(lái)指定Maven分發(fā)構(gòu)件的位置,
如下:
<!-- 定義snapshots庫(kù)和releases庫(kù)的nexus地址 -->
<distributionManagement>
<repository>
<!-- 庫(kù)的id -->
<id>nexus-releases</id>
<!-- 庫(kù)的url -->
<url>https://172.17.103.59:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>https://172.17.103.59:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
如果是快照版本,執(zhí)行mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到快照版本庫(kù)中。
而使用快照版本的模塊,在不更改版本號(hào)的情況下,直接編譯打包時(shí),maven會(huì)自動(dòng)從鏡像服務(wù)器上下載最新的快照版本。
如果是正式發(fā)布版本,那么在執(zhí)行mvn deploy時(shí)會(huì)自動(dòng)發(fā)布到正式版本庫(kù)中,而使用正式版本的模塊。
在不更改版本號(hào)的情況下,編譯打包時(shí),如果本地已經(jīng)存在該版本的模塊則使用本地的而不是主動(dòng)去鏡像服務(wù)器上下載。
需要注意的是,settings.xml中server元素下id的值必須與POM中repository或snapshotRepository下id的值完全一致。
將認(rèn)證信息放到settings下而非POM中,是因?yàn)镻OM往往是它人可見的,而settings.xml是本地的。
代碼如下:
<settings>
...
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
...
</settings>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java內(nèi)存溢出的幾個(gè)區(qū)域總結(jié)(注意避坑!)
內(nèi)存溢出是指應(yīng)用系統(tǒng)中存在無(wú)法回收的內(nèi)存或使用的內(nèi)存過(guò)多,最終使得程序運(yùn)行要用到的內(nèi)存大于虛擬機(jī)能提供的最大內(nèi)存,下面這篇文章主要給大家介紹了關(guān)于Java內(nèi)存溢出的幾個(gè)區(qū)域,總結(jié)出來(lái)給大家提醒注意避坑,需要的朋友可以參考下2022-11-11
java Quartz定時(shí)器任務(wù)與Spring task定時(shí)的幾種實(shí)現(xiàn)方法
本篇文章主要介紹了java Quartz定時(shí)器任務(wù)與Spring task定時(shí)的幾種實(shí)現(xiàn)方法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
SpringBoot同時(shí)支持HTTPS與HTTP的實(shí)現(xiàn)示例
本文主要介紹了SpringBoot同時(shí)支持HTTPS與HTTP的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

