maven的多倉庫配置的實現(xiàn)步驟
最近在工作中,拉取一個jar包,不確定最初在maven的setting.xml配置的鏡像配置能否拉取到,根據(jù)AI搜索資料得到一些啟發(fā)。
場景:
我在我的maven setting.xml配置了阿里云的鏡像,這是我們國內開發(fā)大多數(shù)的必要配置,原因是通過阿里云的拉取,可以加快拉取速度:
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/central</url> </mirror>
在我項目的pom.xml需要拉取一些jar,發(fā)現(xiàn)拉取過程中提示拉取不到jar包,于是,我根據(jù)搜索到的資料再pom.xml加了倉庫配置:
<repositories>
<repository>
<id>central-ma</id>
<url>https://repo1.maven.org/maven2/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
<repository>
<id>eclipse-releases</id>
<url>https://repo.eclipse.org/content/repositories/releases/</url>
</repository>
</repositories>
然后maven的setting.xml配置改成:
<mirror> <id>nexus-aliyun</id> <mirrorOf>central,!central-ma</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/central</url> </mirror>
這樣一修改,理解上有所改變,接下來,對新配置點理解進行分析
<mirror> <id>nexus-aliyun</id> <mirrorOf>central,!central-ma</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/central</url> </mirror>
- mirror 定義了一個鏡像(mirror),Maven 會把對某些倉庫的請求重定向到你指定的鏡像地址,從而加速下載(尤其是國內訪問官方中央倉庫很慢的情況下)。
- <id>nexus-aliyun</id>:這個鏡像的唯一標識符,建議唯一,通常和倉庫的 id 相關聯(lián)。
- <url>https://maven.aliyun.com/repository/central</url>:真正的鏡像地址,所有被鏡像的請求都會重定向到這里。這是阿里云提供的 Maven 中央倉庫公共鏡像,速度很快。
- <mirrorOf>central,!central-ma</mirrorOf>:這是最關鍵的部分,表示這個鏡像代理哪些倉庫。拆解一下:central:指的是 Maven 默認的中央倉庫,其 id 在 super pom 中定義為 "central",地址是repo.maven.apache.org/maven2。
- !central-ma:這里的 ! 表示排除(取反)。所以整體意思是:鏡像所有 id 為 "central" 的倉庫請求,把它們重定向到阿里云鏡像。但排除 id 為 "central-ma" 的倉庫,這個倉庫的請求不會走阿里云鏡像,而是走它自己原本配置的地址。
引申:
我們要明白的是,maven所有的項目都隱式繼承Super POM,這是maven內置的默認配置, 在Super POM,中默認定義了一個倉庫:
<repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> </repository>
這是Maven Central Repository(Maven 中央倉庫),全球最大的公共開源 jar 包倉庫。 所以這里的central就關聯(lián)上上面setting.xml mirrof的central。
當你的 pom.xml 中只聲明 而沒有額外配置 時,Maven 會:
- 先檢查本地倉庫(~/.m2/repository)。
- 如果本地沒有,就去默認的 "central" 倉庫下載。
具體在實際運用中,pom.xml的repositories根據(jù)使用者自由配置,可以是公司內網倉庫,可以是其他倉庫,我在這里是以maven的 repo1.maven.org/maven2 來配置repository舉例。
到此這篇關于maven的多倉庫配置的實現(xiàn)步驟的文章就介紹到這了,更多相關maven 多倉庫配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringSecurity顯示用戶賬號已被鎖定的原因及解決方案
SpringSecurity中用戶賬號被鎖定問題源于UserDetails接口方法返回值錯誤,解決方案是修正isAccountNonLocked()等方法的邏輯,確保返回正確狀態(tài),避免誤判賬戶鎖定,從而允許合法用戶登錄,下面給大家介紹SpringSecurity顯示用戶賬號已被鎖定的解決方案,感興趣的朋友一起看看吧2025-06-06
SpringBoot整合Redis實現(xiàn)token緩存
于token通常會被多次使用,我們需要把它保存到緩存中,以減少頻繁地訪問數(shù)據(jù)庫,本文主要介紹了SpringBoot整合Redis實現(xiàn)token緩存,感興趣的可以了解一下2024-02-02
UniApp?+?SpringBoot?實現(xiàn)微信支付和退款功能
這篇文章主要介紹了UniApp?+?SpringBoot?實現(xiàn)微信支付和退款功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
Java空指針異常NullPointerException的原因與解決方案
在Java開發(fā)中,NullPointerException(空指針異常)是最常見的運行時異常之一,通常發(fā)生在程序嘗試訪問或操作一個為null的對象引用時,這種異常不僅會導致程序崩潰,還會增加調試難度,所以本文系統(tǒng)梳理NullPointerException的成因、調試方法和避免策略2025-06-06
IDEA中WebService生成Java代碼并調用外部接口實現(xiàn)代碼
這篇文章主要介紹了IDEA中WebService生成Java代碼并調用外部接口實現(xiàn),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05

