activeByDefault
- это запасной вариант, который активируется, если другой профиль не активирован.
Чтобы активировать более одного профиля, вы можете либо добавить их в раздел activeProfiles
вашего settings.xml
, что имеет смысл для локальной разработки установить для профиля dev
или prod
для другого машины.
Вы можете запустить его с параметрами CLI, такими как опция -P
или через System-Property-Activation и -Dpropname=value
. Опция системного свойства также имеет отрицательную версию, которая запускает профиль, если свойство либо не установлено, либо не имеет определенных значений. Это вполне может быть использовано для реализации функции «или-или-переключаться», при этом по умолчанию срабатывает, если свойство не установлено:
<profile>
<id>dev</id>
<activation>
<property>
<name>!prod</name> <!-- deactivated if system property prod is set, otherwise activated -->
</property>
</activation>
</profile>
<profile>
<id>prod</id>
<activation>
<property>
<name>prod</name>
</property>
</activation>
</profile>
Деактивировать разработку / активировать продукт с помощью
mvn ... -Dprod=true
Кроме этих опций, похоже, нет прямого способа безоговорочно активировать профиль в сочетании с другим профилем, который запускается условно.
Но есть небольшой обходной путь, который активирует профиль по условию, при этом условие всегда выполняется, и это - использование активации файла и файла, который всегда существует, например, pom.xml
или - если ваши poms расположены в другая позиция, .
работает так же
<profile>
<id>dev</id>
<activation>
<file>
<exists>pom.xml</exists>
</file>
</activation>
</profile>