Обычно (по моему опыту) различные репозитории настраиваются в settings.xml, а не в отдельных профилях (кроме, возможно, в профилях, включенных по умолчанию).
Пример профиля по умолчанию:
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>central</id>
<url>http://some_url/content/groups/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>snapshots</id>
<url>http://some_url/content/groups/public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
Если вы беспокоитесь о том, зависимости SNAPSHOT в ваших релизах, вы можете использовать такие инструменты, как maven-release-plugin, чтобы убедиться, что нет никаких зависимостей МГНОВЕННЫХ в вашем проекте.
Каковы основные характеристики различных профилей этих типов?
Вы часто используете профили для разделения между различными средами сборки. Например, используя CI, вы часто размещаете плагины для анализа статического кода, отчетов, тестирования и т. Д. В профиле, который активируется только при создании на сервере CI (поскольку для запуска его с помощью этих инструментов требуется больше времени).
Другое использование, чтобы выделить определенную часть приложения, например, вы не хотите, чтобы приемо-тест подмодуль для запуска на каждом МВН теста, но только иногда при включении теста на МВН -p acceptanceTests профиль
проблемы окружающей среды конкретный строит
Теперь профили иногда используется для отдельных конфигураций, таких как соединения строки, enpoints и т.д. на моем взгляде, что не является идеальным, так как вы в конечном итоге с окружающей средой конкретных построений. Иногда этого трудно избежать, но большую часть времени это может быть решена путем экстернализации конфигурации (обязательно иметь правильное управление конфигурацией) и использовать тот же двоичный артефакт в dev/test/prod. Таким образом, вы уверены, что сборка, прошедшая системный тест, такая же, как в prod и т. Д.
Зачем включать репозиторий моментального снимка и репозиторий артефакта в профиль по умолчанию? Несмотря на то, что в профиле по умолчанию вы только развертываете репозиторий моментального снимка, остается ли еще там, только чтобы вы могли получить доступ к основному репозиторию артефакта? В профиле «release» было бы разумнее включить maven-release-плагин непосредственно в settings.xml и оставить вне репозитория моментального снимка? –
Наличие как репозитория выпуска, так и моментального снимка в профиле по умолчанию удобно. Таким образом, вы можете ссылаться на репозиторий по идентификатору в и вызывая развертывание mvn, оно развертывается в репозитории моментальных снимков, если это версия X.Y.Z-SNAPSHOT или репозиторий выпуска, если это фактический выпуск X.Y.Z. –
ebaxt
Большинство проектов, которые я видел, не имеют отдельного профиля выпуска, поэтому плагин release вложен в объект по умолчанию в pom. Если политики проекта требуют этого, я предполагаю, что имеет смысл разместить плагин release и связанные с ним плагины (например, maven-gpg-plugin) в отдельном профиле. Установка параметров плагинов в версии также является опцией, но это, вероятно, будет в , я думаю, и вам придется поместить его в проект pom, чтобы включить его. –
ebaxt