<mirrors>
<!-- 此處的mirrorOf不能隨便寫,要和repository name標(biāo)簽的一致 -->
<!--
maven獲取真正起作用的repository集合流程:首先會(huì)獲取pom.xml里的repository集合,然后在settings.xml里找mirrors元素,
如果repository的id和mirror的mirrorOf的值相同,則該mirror替代該repository,
如果該repository找不到對(duì)應(yīng)的mirror,
則使用其本身,依此可以得到最終起作用的repository集合
Internal Artifactory Maven repository作為私服,mirrorOf配置為*來提供中央倉庫中不存在的jar包
-->
<mirror>
<id>mvn</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>maven.dev.snaponglobal.com</id>
<name>Internal Artifactory Maven repository</name>
<url>https://repo.maven.apache.org/maven2/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<repositories>
<!-- 此處的默認(rèn)包含了一個(gè)central的倉庫 -->
<repository>
<id>nexus3</id>
<name>nexus3</name>
<url>http://172.16.8.6:8082/repository/maven-public/</url>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
maven獲取真正起作用的repository集合流程:首先會(huì)獲取pom.xml里的repository集合,然后在settings.xml里找mirrors元素,
如果repository的id和mirror的mirrorOf的值相同,則該mirror替代該repository,
如果該repository找不到對(duì)應(yīng)的mirror,
則使用其本身,依此可以得到最終起作用的repository集合,
repositories中默認(rèn)包含了中央倉庫central,當(dāng)然也可以重新它的url;
可以理解mirror是復(fù)寫了對(duì)應(yīng)id的repository
mirror相當(dāng)于一個(gè)攔截器,它會(huì)攔截maven對(duì)remote repository的相關(guān)請(qǐng)求,把請(qǐng)求里的remote repository地址,重定向到mirror里配置的地址。
2.1 沒有配置mirror:

image.png
2.2 配置mirror:

image.png
<mirrorOf>A</mirrorOf> 此時(shí),B Repository被稱為A Repository的鏡像。
如果倉庫X可以提供倉庫Y存儲(chǔ)的所有內(nèi)容,那么就可以認(rèn)為X是Y的一個(gè)鏡像。換句話說,任何一個(gè)可以從倉庫Y獲得的構(gòu)件,都胡夠從它的鏡像中獲取。