溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Maven中怎么配置遠程倉庫

發(fā)布時間:2021-07-24 15:56:02 來源:億速云 閱讀:223 作者:Leah 欄目:編程語言

這篇文章給大家介紹Maven中怎么配置遠程倉庫,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

對那些在中央倉庫中沒有的構(gòu)件,我們可以在 pom.xml 中添加另外一個遠程倉庫。比如,將 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 子元素聲明一個或多個遠程倉庫。該例子中配置了一個 id 為 jboss,名稱為 JBoss Maven Repository 的倉庫。

在 pom 中可以配置多個倉庫,每個倉庫的 id 都要是唯一的。而且需要注意的是,在 Maven 的超級 pom 中,已經(jīng)默認(rèn)配置了一個中央倉庫,它的 id 為 central。

所以請不要再配置一個這樣的 id,否則新的配置會覆蓋原來的配置。在 repository 中,有一個 URL 元素,該元素是指定當(dāng)前配置的遠程倉庫地址,一般來說都是基于 HTTP 的。

另外,配置中的 releases 和 snapshots 元素也是比較重要的元素,它們用來控制 Maven 對發(fā)布版本的構(gòu)件和快照版本的構(gòu)件的下載。當(dāng)它們的子元素 enabled 的值配置成 true 或 false 的時候,表示開啟或關(guān)閉對應(yīng)版本的構(gòu)件下載。

在實際項目中,一般開啟 releases 版本的構(gòu)件下載,屏蔽 snapshots 版本的構(gòu)件下載,因為 snapshots 版本的構(gòu)件不穩(wěn)定。

至于上面例子中的 layout 元素,值為 default,表示倉庫布局是 Maven2 和 Maven3 的默認(rèn)布局,而不是 Maven1 的布局。

當(dāng)然,也可以在 releases 和 snapshots 元素中,添加 updatePolicy 和 checksumPolicy 兩個子元素進一步指定倉庫的控制使用。 

例如:

<releases>
   <enabled>true</enabled>
   <updatePolicy>daily</updatePolicy>
   <checksumPolicy>ignore</checksumPolicy>
</release>

updatePolicy 配置 Maven 從遠程倉庫檢測更新的頻率,默認(rèn)值為 daily,表示每天檢測異常。此外,還可以配置其他的值:

  never:從不檢測更新。

  always:每次構(gòu)建都檢測更新。

  interfal:X:每隔 X 分鐘檢測一次更新。

checksumPolicy 配置檢測校驗和文件的策略。當(dāng)構(gòu)件被部署到 Maven 倉庫的時候,自動會部署對應(yīng)的校驗和文件。在下載構(gòu)件的時候,Maven 會驗證校驗和文件,如果失敗了怎么辦?

當(dāng) checksumPolicy 的值為 warn 時,Maven 會執(zhí)行構(gòu)建時輸出警告信息;如果是 fail,Maven 會直接中止,提示失敗;如果是 ignore,Maven 會忽略校驗的錯誤,繼續(xù)構(gòu)建 Maven 項目。checksumPolicy 的默認(rèn)值是warn。

配置好了遠程倉庫,那怎樣將自己的 Maven 項目構(gòu)建成構(gòu)件,發(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 兩個子元素,repository 表示發(fā)布版本的構(gòu)件倉庫,snapshotRepository 表示快照版本的構(gòu)件倉庫。id 和 name 分別是倉庫的唯一標(biāo)記與名稱。

在 pom.xml 中完成了上面類似的配置后,使用 Maven 命令 mvn deploy,Maven 就會自動將構(gòu)建輸出的構(gòu)件部署到對應(yīng)的倉庫中。

不管是在遠程倉庫中部署構(gòu)件,還是從遠程倉庫中下載依賴構(gòu)件,實質(zhì)上都是對服務(wù)器進行訪問。有些服務(wù)器訪問是需要權(quán)限認(rèn)證的,只有認(rèn)證通過后的用戶才能發(fā)請求訪問服務(wù)器,特別是添加、修改和刪除服務(wù)器上的文件。

那怎樣配置,才能讓 Maven 自動訪問那些需要權(quán)限認(rèn)證后才能訪問的遠程倉庫呢?

同配置倉庫信息和遠程私服部署信息不同,它們都是在 pom.xml 中進行配置的,需要在 settings.xml 中進行配置。因為 pom 是被提交到代碼倉庫中供所有成員訪問的,而 settings.xml 一般只放在本地機器,因此在 settings.xml 中配置認(rèn)證信息更安全。比如如下配置,就是配置的訪問前面搭建的 Archiva 私服的安全認(rèn)證信息: 

<settings>
   ...
   <servers>
       ...
       <server>
           <id>archivaServer</id>
           <username>admin</username>
           <password>admin123</password>
       </server>
       ...
   </servers>
   ...
</settings>

其中,username 和 password 是服務(wù)器中安全認(rèn)證的用戶名與密碼信息。id 為認(rèn)證服務(wù)器的唯一標(biāo)記。這個標(biāo)記需要同 pom.xml 中 distributionManagement 里面配置的倉庫的 id 對應(yīng)起來。表示訪問某個倉庫的地址的話,需要先根據(jù) id 找到 server 的認(rèn)證信息認(rèn)證,才能有權(quán)限訪問。  

關(guān)于Maven中怎么配置遠程倉庫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI