問題場景
1、國內訪問maven默認遠程中央鏡像特別慢
2、用阿里的鏡像替代遠程中央鏡像
3、大部分jar包都可以在阿里鏡像中找到,部分jar包在阿里鏡像中沒有,需要單獨配置鏡像
解決方案
settings.xml 中可以使用變量,可以嘗試使用變量解決:
復制代碼
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/repositories/central/
<!-- 中央倉庫1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央倉庫2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
復制代碼
在maven的配置文件setting.xml大里面有個mirrors節點,用來配置鏡像URL。mirrors可以配置多個mirror,每個mirror有id,name,url,mirrorOf屬性,
id是唯一標識一個mirror,name節點名,url是官方的庫地址,mirrorOf代表了一個鏡像的替代位置,例如central就表示代替官方的中央庫
雖然mirrors可以配置多個子節點,但是它只會使用其中的一個節點,即默認情況下配置多個mirror的情況下,只有第一個生效,只有當前一個mirror
無法連接的時候,才會去找后一個;而我們想要的效果是:當a.jar在第一個mirror中不存在的時候,maven會去第二個mirror中查詢下載,但是maven不會這樣做!
注意:
配置多個mirror時,mirrorOf不能配置" * "," * " 的意思就是(根據mirrorOf和repository的id)匹配所有的倉庫(repository),
這樣就是說如果你需要某個jar,他會從鏡像地址去下載這個jar。不管你配置了多少個庫,即使這些庫的地址不一樣,仍然會從鏡像地址訪問