Как отключить зеркальный репозиторий в настройках maven
В моем 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 не использует профиль по умолчанию или определенный профиль.
Также: как изменить зеркало для проекта?
Ответы
Ответ 1
Скопируйте файл settings.xml
, удалите запись mirror
и сообщите maven для использования с опцией командной строки файла --settings
.
Для автоматизации процесса используйте XSLT или инструмент командной строки, например XMLStarlet:
xmlstarlet ed -N 's=http://maven.apache.org/SETTINGS/1.0.0' --delete "//s:mirror" settings.xml
выводит новый settings.xml
файл на stdout
, который не содержит зеркальных настроек.
Ответ 2
К сожалению, это невозможно с помощью single settings.xml. В Maven JIRA есть запрос функции, проголосуйте за это!
Обходной путь состоит в том, чтобы иметь два параметра settings.xml и запустить maven с выбранной конфигурацией:
mvn -s my-settings.xml
Ответ 3
Записи в settings.xml
применяются ко всем проектам maven в системе и, следовательно, не предназначены для индивидуальных проектов.
Если вы хотите, чтобы разные проекты имели разные profiles
, вам следует указать их в проекте pom
. Вам не нужно иметь <profiles>
в ~/m2/settings.xml
.
Что касается <mirrors>
, они применяются к repositories
, которые вы хотите зеркалировать. Вы можете выбрать, какие репозитории должны быть зеркалированы, но не какие проекты должны использовать зеркало, а какие нет. Вы всегда можете запустить проект в режиме offline
, если вы не хотите его загружать из удаленного репозитория.
Ответ 4
Несколько 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
. Это фактически то же самое, что и возможность помещать зеркало в профиль.