2016-02-08 3 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, а затем nexus-osc-thirdparty, а затем maven2? Я уже проверил maven mirror setting guide, но я все еще не могу понять.maven хранилище setting.xml зеркало

ответ

4

Цитируя Maven documentation about mirrors:

Чтобы настроить зеркало данного хранилища, вы предоставляете его в файле настроек (${user.home}/.m2/settings.xml), давая новое хранилище свой собственный идентификатор и URL, а также указать параметр mirrorOf что это идентификатор репозитория, в котором вы используете зеркало.

Что это означает, что 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

Смежные вопросы