Как активировать профиль с помощью свойства maven?
Я пытаюсь активировать профиль maven, используя свойство, определенное внутри pom.xml
:
<project>
[...]
<properties>
<run.it>true</run.it>
</properties>
[...]
<profiles>
<profile>
<activation>
<property><name>run.it</name></property>
</activation>
[...]
</profile>
</profiles>
[...]
</project>
По-видимому, это не сработает. Однако активация работает из командной строки:
mvn -Drun.it
Это "по дизайну"? Если это так, возможно ли это обходное решение?
Ответы
Ответ 1
Изменить, переписать, как я понимаю вопрос сейчас.
Смотрите этот пост форума:
активация профиля основана на свойствах SYSTEM. вы не можете активировать профили на основе свойств, определенных в вашем помпе вы не можете активировать профили на основе системных свойств, определенных после план сборки начал выполнение
Ответ 2
Как насчет использования такой активации
<profile>
<id>gwt</id>
<activation>
<file>
<exists>uses-gwt.marker</exists>
</file>
</activation>
и добавив файл 'uses-gwt.marker' в исходный элемент управления, рядом с pom.xml. Это дает всем разработчикам одно и то же состояние, а также позволяет аспектно-ориентированный pom. мы используем этот метод в родительском pom и помещаем файлы маркера hte в childs svn. Не идеально, но работает.
Ответ 3
В последних версиях maven (3. 5+?) Вы можете создать папку .mvn
в корне вашего проекта и файл .mvn/maven.config
. В этом файле вы можете активировать профили или установить свойства, как в командной строке.
активировать профиль через свойство: -Dactivate.myprofile=true
активировать профиль напрямую -Pmyprofile
Надеемся, что maven5 получит поддержку Mixins, что, вероятно, сделает настройки сборки более пригодными для повторного использования.
Ответ 4
- Добавьте каталог ".mvn" в корневой каталог вашего проекта.
- Добавьте файл ".mvn/jvm.config"
- Вставьте "-Drun.it = false" в jvm.config.
Теперь это должно работать. Вы можете перезаписать свойство "run.it" в вашем pom.xml, и оно будет выбрано для активации профиля.
Я не уверен, что это ошибка или особенность.
Ответ 5
Как упоминалось в предыдущих ответах, активация профиля работает только с системными свойствами.
Но с небольшим творческим потенциалом вы можете добиться аналогичного результата (условное выполнение плагина), используя свойства pom. Для этого используйте тег фазы плагина, который вы хотите условно выполнить:
<project>
...
<properties>
<run.it>none</run.it>
<!-- <run.it>compile</run.it> -->
<!-- <run.it>package</run.it> -->
</properties>
...
<build>
...
<plugins>
<plugin>
<artifactId>your-plugin</artifactId>
<executions>
<execution>
<phase>${run.it}</phase>
</execution>
</executions>
</plugin>
</plugins>
...
</build>
</project>
Единственное различие заключается в том, что вам нужно использовать имя фазы вместо true/false. Но вы можете изменить свойство или переопределить его как свойство.
Ответ 6
Как объяснил Мориц Хизер, активация профиля основана на свойствах system. Однако вы можете попробовать что-то вроде этого:
<project>
...
<properties>
<run.it>true</run.it>
</properties>
...
<profiles>
<profile>
<activation>
<activeByDefault>${run.it}</activeByDefault>
</activation>
...
</profile>
</profiles>
...
</project>
Идея состоит в том, чтобы определить флаг activeByDefault
в <properties>
.
Ответ 7
Я думаю, что ваш вопрос похож на этот.
Активация профиля maven на основе нескольких свойств
Как уже упоминалось, вы можете активировать профиль и задать различные свойства в соответствии с вашим требованием и использовать команду mvn -Prun-it
, чтобы установить свойство в значение true.
<project>
[...]
[...]
<profiles>
<profile>
<id>don't-run</id>
<properties>
<run.it>false</run.it>
</properties>
[...]
</profile>
<profile>
<id>run-it</id>
<properties>
<run.it>true</run.it>
</properties>
[...]
</profile>
</profiles>
[...]
</project>