maven中mirror與repositories的關系


<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
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM