Maven: Как активировать профиль из командной строки?
Это фрагмент из моего pom.xml.
Я попробовал следующее, но профиль не был активирован.
mvn clean install -Pdev1
mvn clean install -P dev1
Когда я попробовал mvn help:active-profiles
, никакие профили не были указаны как активные.
Если я установил <activeByDefault>
для dev1
в true
и запустил mvn help:active-profiles
, он покажет мне, что профиль активирован.
<profile>
<id>dev1</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<env>local</env>
<properties.file>src/test/resources/dev1.properties</properties.file>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/dev1.testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dev2</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<env>local</env>
<properties.file>src/test/resources/dev2.properties</properties.file>
</systemPropertyVariables>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/dev2.testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Мне интересно, почему мой профиль не активируется. Кто-нибудь сталкивался с подобной проблемой?
Ответы
Ответ 1
Команды, которые вы использовали:
mvn clean install -Pdev1
mvn clean install -P dev1
оба правильны. Проблема здесь, вероятно, не в об активации профиля, а скорее в том, что профиль не выполняет то, что вы ожидаете.
Команда:
mvn help:active-profiles
не отображать профиль, поскольку он не содержит -Pdev1
. Вы можете добавить опцию, чтобы профиль появился, но это было бы бессмысленно (вы бы тестировали сам maven).
Что вы должны сделать, это проверить поведение профиля, выполнив следующие действия:
- настроить профиль с
activeByDefault
установленным на true
,
- запустить
mvn help:active-profiles
(чтобы убедиться, что это эффективно
активируется даже без -Pdev1
),
- запустить
mvn install
.
Он должен давать те же результаты, что и ваши команды, и подтверждать, что проблема в том, что профиль не выполняет то, что вы ожидаете.
Ответ 2
Активация по свойствам системы может быть выполнена следующим образом
<activation>
<property>
<name>foo</name>
<value>bar</value>
</property>
</activation>
И запустите mvn-сборку с -D, чтобы установить системное свойство
mvn clean install -Dfoo=bar
Этот метод также помогает выбирать профили в транзитивной зависимости артефактов проекта.
Ответ 3
Я столкнулся с этой проблемой, и я решил упомянутую проблему, добавив параметр -DprofileIdEnabled=true
при запуске команды mvn cli.
Пожалуйста, запустите команду mvn cli как: mvn clean install -Pdev1 -DprofileIdEnabled=true
.
В дополнение к этому решению вам не нужно удалять настройки activeByDefault в вашем POM, упомянутые в предыдущем ответе.
Я надеюсь, что этот ответ решит вашу проблему.
Ответ 4
Просто удалите раздел активации, я не знаю, почему -Pdev1 не переопределяет ложную активацию по умолчанию. Но если вы опустите это:
<activation>
<activeByDefault>false</activeByDefault>
</activation>
тогда ваш профиль будет активирован только после явного объявления как -Pdev1