- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > 編程語(yǔ)言 >
- Maven中怎么配置遠程倉庫
這篇文章給大家介紹Maven中怎么配置遠程倉庫,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
對那些在中央倉庫中沒(méi)有的構件,我們可以在 pom.xml 中添加另外一個(gè)遠程倉庫。比如,將 jboss Maven遠程倉庫添加到 Maven,需要在 Maven 工程的 pom.xml 中添加如下配置。
<project>
...
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Maven Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<layout>default</layout>
</repository>
</repositories>
...
</project>
在 repositories 元素下,可以使用 repository 子元素聲明一個(gè)或多個(gè)遠程倉庫。該例子中配置了一個(gè) id 為 jboss,名稱(chēng)為 JBoss Maven Repository 的倉庫。
在 pom 中可以配置多個(gè)倉庫,每個(gè)倉庫的 id 都要是唯一的。而且需要注意的是,在 Maven 的超級 pom 中,已經(jīng)默認配置了一個(gè)中央倉庫,它的 id 為 central。
所以請不要再配置一個(gè)這樣的 id,否則新的配置會(huì )覆蓋原來(lái)的配置。在 repository 中,有一個(gè) URL 元素,該元素是指定當前配置的遠程倉庫地址,一般來(lái)說(shuō)都是基于 HTTP 的。
另外,配置中的 releases 和 snapshots 元素也是比較重要的元素,它們用來(lái)控制 Maven 對發(fā)布版本的構件和快照版本的構件的下載。當它們的子元素 enabled 的值配置成 true 或 false 的時(shí)候,表示開(kāi)啟或關(guān)閉對應版本的構件下載。
在實(shí)際項目中,一般開(kāi)啟 releases 版本的構件下載,屏蔽 snapshots 版本的構件下載,因為 snapshots 版本的構件不穩定。
至于上面例子中的 layout 元素,值為 default,表示倉庫布局是 Maven2 和 Maven3 的默認布局,而不是 Maven1 的布局。
當然,也可以在 releases 和 snapshots 元素中,添加 updatePolicy 和 checksumPolicy 兩個(gè)子元素進(jìn)一步指定倉庫的控制使用。
例如:
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</release>
updatePolicy 配置 Maven 從遠程倉庫檢測更新的頻率,默認值為 daily,表示每天檢測異常。此外,還可以配置其他的值:
never:從不檢測更新。
always:每次構建都檢測更新。
interfal:X:每隔 X 分鐘檢測一次更新。
checksumPolicy 配置檢測校驗和文件的策略。當構件被部署到 Maven 倉庫的時(shí)候,自動(dòng)會(huì )部署對應的校驗和文件。在下載構件的時(shí)候,Maven 會(huì )驗證校驗和文件,如果失敗了怎么辦?
當 checksumPolicy 的值為 warn 時(shí),Maven 會(huì )執行構建時(shí)輸出警告信息;如果是 fail,Maven 會(huì )直接中止,提示失??;如果是 ignore,Maven 會(huì )忽略校驗的錯誤,繼續構建 Maven 項目。checksumPolicy 的默認值是warn。
配置好了遠程倉庫,那怎樣將自己的 Maven 項目構建成構件,發(fā)布到遠程倉庫中去呢?
需要在 pom.xml 中使用 distributionManagement 配置部署信息就可以了,樣例配置如下:
<distributionManagement>
...
<repository>
<id>archivaServer</id>
<name>Archiva Releases</name>
<url>http://localhost:8080/repository/internal</url>
</repository>
<snapshotRepository>
<id>archivaServer</id>
<name>Archiva Snapshots</name>
<url>http://localhost:8080/repository/snapshots</url>
</snapshotRepository>
...
</distributionManagement>
distributionManagement 中包含 repository 和 snapshotRepository 兩個(gè)子元素,repository 表示發(fā)布版本的構件倉庫,snapshotRepository 表示快照版本的構件倉庫。id 和 name 分別是倉庫的唯一標記與名稱(chēng)。
在 pom.xml 中完成了上面類(lèi)似的配置后,使用 Maven 命令 mvn deploy,Maven 就會(huì )自動(dòng)將構建輸出的構件部署到對應的倉庫中。
不管是在遠程倉庫中部署構件,還是從遠程倉庫中下載依賴(lài)構件,實(shí)質(zhì)上都是對進(jìn)行訪(fǎng)問(wèn)。有些服務(wù)器訪(fǎng)問(wèn)是需要權限認證的,只有認證通過(guò)后的用戶(hù)才能發(fā)請求訪(fǎng)問(wèn)服務(wù)器,特別是添加、修改和刪除服務(wù)器上的文件。
那怎樣配置,才能讓 Maven 自動(dòng)訪(fǎng)問(wèn)那些需要權限認證后才能訪(fǎng)問(wèn)的遠程倉庫呢?
同配置倉庫信息和遠程私服部署信息不同,它們都是在 pom.xml 中進(jìn)行配置的,需要在 settings.xml 中進(jìn)行配置。因為 pom 是被提交到代碼倉庫中供所有成員訪(fǎng)問(wèn)的,而 settings.xml 一般只放在本地機器,因此在 settings.xml 中配置認證信息更安全。比如如下配置,就是配置的訪(fǎng)問(wèn)前面搭建的 Archiva 私服的安全認證信息:
<settings>
...
<servers>
...
<server>
<id>archivaServer</id>
<username>admin</username>
<password>admin123</password>
</server>
...
</servers>
...
</settings>
其中,username 和 password 是服務(wù)器中安全認證的用戶(hù)名與密碼信息。id 為認證服務(wù)器的唯一標記。這個(gè)標記需要同 pom.xml 中 distributionManagement 里面配置的倉庫的 id 對應起來(lái)。表示訪(fǎng)問(wèn)某個(gè)倉庫的地址的話(huà),需要先根據 id 找到 server 的認證信息認證,才能有權限訪(fǎng)問(wèn)。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系站長(cháng)郵箱:ts@56dr.com進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2