Подтвердить что ты не робот

Как активировать профиль с помощью свойства 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

Это "по дизайну"? Если это так, возможно ли это обходное решение?

4b9b3361

Ответ 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>