2016-02-08 62 views
5
<mirrors> 
    <!-- mirror 
    | Specifies a repository mirror site to use instead of a given repository. The repository that 
    | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used 
    | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. 
    | 
    <mirror> 
     <id>mirrorId</id> 
     <mirrorOf>repositoryId</mirrorOf> 
     <name>Human Readable Name for this Mirror.</name> 
     <url>http://my.repository.com/repo/path</url> 
    </mirror> 
    --> 
    <mirror> 
     <id>nexus-osc</id> 
     <mirrorOf>central</mirrorOf> 
     <name>Nexus osc</name> 
     <url>http://maven.oschina.net/content/groups/public/</url> 
    </mirror> 
    <mirror> 
     <id>nexus-osc-thirdparty</id> 
     <mirrorOf>thirdparty</mirrorOf> 
     <name>Nexus osc thirdparty</name> 
     <url>http://maven.oschina.net/content/repositories/thirdparty/</url> 
    </mirror> 
    <mirror> 
     <id>maven2</id> 
     <mirrorOf>maven2</mirrorOf> 
     <name>maven2</name> 
     <url>http://repo1.maven.org/maven2/</url> 
    </mirror> 
</mirrors> 

什麼是mirrorOf的正確使用方法?請問maven先試試從id=nexus-osc拿到jar然後nexus-osc-thirdparty然後maven2? 我已經檢查過maven mirror setting guide但我還是不明白。maven repository setting.xml鏡像

回答

4

引述Maven documentation about mirrors

配置給定庫的一面鏡子,你在你的設置文件(${user.home}/.m2/settings.xml)提供了這首歌,把新的倉庫自己的ID和網址,並指定mirrorOf設置,是您使用鏡像的存儲庫的ID。

這意味着mirrorOf指向現有的存儲庫聲明,並將Maven配置爲在嘗試連接指定存儲庫時使用該鏡像。


舉個例子吧。你必須在你的項目中規定的下列信息庫中的項目:

<project> 
    ... 
    <repositories> 
    <repository> 
     <id>my-internal-site</id> 
     <url>http://myserver/repo</url> 
    </repository> 
    </repositories> 
    ... 
</project> 

與以下聲明,您的設置:

<settings> 
    ... 
    <mirrors> 
    <mirror> 
     <id>UK</id> 
     <name>UK Central</name> 
     <url>http://uk.maven.org/maven2</url> 
     <mirrorOf>my-internal-site</mirrorOf> 
    </mirror> 
    </mirrors> 
    ... 
</settings> 

這意味着,每當Maven將嘗試從下載庫my-internal-site存儲庫,它實際上不會使用http://myserver/repo,而是使用鏡像聲明並從http://uk.maven.org/maven2下載庫。

它確實不是定義任何順序。它只是聲明Maven需要下載工件以代替鏡像存儲庫。


指定<mirrorOf>central</mirrorOf>告訴你鏡像Maven的中央倉庫這是默認位置的Maven下載文物從Maven的。


因此,使用鏡子往往是在企業環境中使用,當你有一箇中央存儲庫內部,每Maven的請求通過該存儲庫管理。

+0

謝謝@Tunaki。 – Oscar