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

Na czym dokładnie polega mirrorOf? Czy maven najpierw spróbuje uzyskać słoik od id=nexus-osc, a następnie nexus-osc-thirdparty, a następnie maven2? Sprawdziłem już wersję maven mirror setting guide, ale nadal nie mogę tego zrozumieć.ustawienie repozytorium mafii.xml lustro

Odpowiedz

4

Cytowanie Maven documentation about mirrors:

Aby skonfigurować lustro danego repozytorium, należy podać go w pliku ustawień (${user.home}/.m2/settings.xml), dając nowe repozytorium własny identyfikator i adres URL, a następnie określ ustawienie mirrorOf że jest identyfikatorem repozytorium, z którego korzystasz.

Oznacza to, że mirrorOf punktów do istniejącej deklaracji i konfiguruje repozytorium Maven używać tego lustra, gdy próbuje połączyć się z określoną repozytorium.


Weźmy przykład. Masz projekt z następującym repozytorium zdefiniowanego w projekcie:

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

z następującym oświadczeniem w ustawieniach:

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

Oznacza to, że gdy Maven będzie próbował pobrać biblioteki z my-internal-site Repozytorium, w rzeczywistości nie będzie używać http://myserver/repo, ale zamiast tego użyje deklaracji lustrzanej i pobierze bibliotekę z http://uk.maven.org/maven2.

To nie zdefiniować żadnego zamówienia. To po prostu deklaruje, gdzie Maven potrzebuje pobrać artefakty w miejsce lustrzanego repozytorium.


Określanie <mirrorOf>central</mirrorOf> mówi Maven, że są mirroring repozytorium Maven Central, która jest domyślna lokalizacja gdzie Maven artefakty od pobrania.


Jako takie, za pomocą lustra jest często używane w kontekście przedsiębiorstw, gdy masz centralne repozytorium wewnętrzne i każde żądanie Maven przechodzi przez tego menedżera repozytorium.

+0

dzięki @Tunaki. – Oscar