<mirrors>
<!-- 此处的mirrorOf不能随便写,要和repository name标签的一致 --> <!-- maven获取真正起作用的repository集合流程:首先会获取pom.xml里的repository集合,然后在settings.xml里找mirrors元素, 如果repository的id和mirror的mirrorOf的值相同,则该mirror替代该repository, 如果该repository找不到对应的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> <!-- 此处的默认包含了一个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集合流程:首先会获取pom.xml里的repository集合,然后在settings.xml里找mirrors元素,
如果repository的id和mirror的mirrorOf的值相同,则该mirror替代该repository,
如果该repository找不到对应的mirror,
则使用其本身,依此可以得到最终起作用的repository集合,
repositories中默认包含了中央仓库central,当然也可以重新它的url;
可以理解mirror是复写了对应id的repository
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
2.1 没有配置mirror:

image.png
2.2 配置mirror:

image.png
<mirrorOf>A</mirrorOf> 此时,B Repository被称为A Repository的镜像。
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取
作者:舒尔诚
链接:https://www.jianshu.com/p/c2ca01cdcb6e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。