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

Qual è l'uso corretto di mirrorOf? Prima di tutto, prova ad ottenere il barattolo da id=nexus-osc e poi da nexus-osc-thirdparty e poi da maven2? Ho già controllato il maven mirror setting guide ma non riesco ancora a capire.maven repository setting.xml the mirrorof

risposta

4

Citando il Maven documentation about mirrors:

Per configurare uno specchio di una data repository, si fornisce nel file di impostazioni (${user.home}/.m2/settings.xml), dando il nuovo repository proprio ID e URL, e specificare l'impostazione mirrorOf che è l'ID del repository in cui stai utilizzando un mirror di.

Ciò significa che mirrorOf indica una dichiarazione repository esistente e configura Maven di utilizzare quello specchio quando si tenta di collegare il repository specificato.


Facciamo un esempio. Si dispone di un progetto con il seguente repository definito nel progetto:

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

con la seguente dichiarazione nelle impostazioni:

<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> 

Ciò significa che ogni volta che Maven tenterà di scaricare una libreria dalla Repository my-internal-site, in realtà non utilizza http://myserver/repo ma, invece, utilizza la dichiarazione mirror e scarica la libreria da http://uk.maven.org/maven2.

Fa non definire qualsiasi ordine. Dichiara solo dove Maven ha bisogno di scaricare artefatti al posto del repository mirror.


Specificando <mirrorOf>central</mirrorOf> dice Maven che si sta mirroring il repository Maven centrale che è il percorso predefinito in cui Maven download di artefatti da.


Come tale, utilizzando specchi viene spesso utilizzato in ambito aziendale quando si dispone di un repository interno centrale e ogni richiesta Maven che passa attraverso repository manager.

+0

grazie @Tunaki. – Oscar

Problemi correlati