Как отключить зеркальный репозиторий в настройках maven - PullRequest
15 голосов
/ 09 февраля 2011

В моем maven ~ ./. M2 / settings.xml я определил зеркало и несколько репозиториев:

 <mirrors>
    <mirror>
    <id>someid</id>
        .....
    </mirro>
 </mirrors>
...

<profiles>
    <profile>
         <id>default</id>
            <activation>
                     <activeByDefault>true</activeByDefault>
                 </activation>
                 <repositories>
            <repository>                                                                    <id>repo....</id>
....

         </profile>
</profiles>

Это отлично работает.

В некоторых проектах я хочуотключите зеркало и профиль по умолчанию.Я знаю, что могу определить отдельный профиль для репозиториев, но я не знаю, как сказать плагину maven eclipse не использовать профиль по умолчанию или определенный профиль.Также: как мне поменять зеркало для проекта?

Ответы [ 4 ]

9 голосов
/ 25 мая 2013

К сожалению, это невозможно с одним settings.xml. В Maven JIRA есть запрос на добавление функции, проголосуйте за это!

Обходной путь должен иметь два файла settings.xml и работающий maven с выбранной конфигурацией:

mvn -s my-settings.xml
2 голосов
/ 26 июля 2012

Скопируйте файл settings.xml, удалите запись mirror и сообщите maven для использования с параметром командной строки --settings file .

Используйте XSLT или инструмент командной строкинапример XMLStarlet для автоматизации процесса:

xmlstarlet ed -N 's=http://maven.apache.org/SETTINGS/1.0.0' --delete "//s:mirror" settings.xml

печатает новый файл settings.xml в stdout, который не содержит никаких настроек зеркала.

1 голос
/ 09 февраля 2011

Записи в settings.xml применяются ко всем maven проектам в системе и, следовательно, не предназначены для индивидуальных проектов.

Если вы хотите, чтобы разные проекты имели разные profiles, то выследует указать их в pom проекта.Вам не нужно иметь раздел <profiles> в вашем ~/m2/settings.xml.

Что касается <mirrors>, они относятся к repositories, который вы хотите отразить.Вы можете выбрать, какие репозитории должны быть отражены, но не какие проекты должны использовать зеркало, а какие нет.Вы всегда можете запустить проект в режиме offline, если вы не хотите, чтобы он загружался из удаленного хранилища.

0 голосов
/ 09 марта 2016

Несколько settings.xml не нужно, я думаю, чтобы сделать это.

Возможно управление зеркалами с помощью профилей.

Я могу использовать свойство для своего хранилища id, например, суффикс ${repo-suffix}

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3
  <distributionManagement>
    <repository>
      <id>deployment${repo-suffix}</id>
      <name>Internal Releases</name>

Затем я могу добавить repo-suffix к профилю, например, чтобы придать ему значение -1.

<profile>
  <id>my-profile</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
    <properties>
      <repo-suffix>-1</repo-suffix>
      ...

Таким образом, теперь у меня есть динамически определенный идентификатор хранилища в файлах pom.

$ mvn help:effective-pom | grep "<distributionManagement>" -A 3
  <distributionManagement>
    <repository>
      <id>deployment-1</id>
      <name>Internal Releases</name>

Для этого репозитория deployment-1 я могу определить зеркала в моем settings.xml. Это практически то же самое, что возможность установить зеркало в профиль.

...