2016-02-08 32 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