Как активировать профиль с помощью свойства maven? - PullRequest
24 голосов
/ 15 апреля 2011

Я пытаюсь активировать профиль 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

Это «по замыслу»?Если это так, каков возможный обходной путь?

Ответы [ 7 ]

26 голосов
/ 15 апреля 2011

Редактировать, полностью переписать, как я понимаю вопрос сейчас.

Смотрите это сообщение на форуме :

Активация профиля

основана на свойствах SYSTEM . Вы не можете активировать профили на основе свойств, определенных в вашем пом Вы не можете активировать профили на основе системных свойств, определенных после План сборки начал выполнение

6 голосов
/ 06 декабря 2011

Как насчет использования такой активации

    <profile>
        <id>gwt</id>
        <activation>
            <file>
                <exists>uses-gwt.marker</exists>
            </file>
        </activation>

и добавление файла 'used-gwt.marker' в систему управления версиями, прямо рядом с pom.xml. Это дает всем разработчикам одинаковое состояние, а своего рода позволяет аспектно-ориентированному pom. мы используем эту технику в родительском pom и помещаем файлы маркеров hte в svn childs. Не идеально, но работает.

1 голос
/ 29 июня 2018

В последних версиях maven (3.5+?) Вы можете создать папку .mvn в корне вашего проекта и файл .mvn/maven.config. В этом файле вы можете активировать профили или установить свойства, как в командной строке.

активировать профиль через свойство:
-Dactivate.myprofile=true
активировать профиль напрямую
-Pmyprofile

Надеюсь, maven5 получит поддержку Mixins, что, вероятно, сделает настройки сборки более пригодными для повторного использования.

0 голосов
/ 06 мая 2019
  • Добавьте каталог ".mvn" в корневой каталог вашего проекта.
  • Добавить файл ".mvn / jvm.config"
  • Вставьте "-Drun.it = false" в jvm.config.

Теперь это должно работать. Вы можете перезаписать свойство "run.it" в вашем pom.xml, и оно будет выбрано для активации профиля.

Я не уверен, является ли это ошибкой или функцией.

0 голосов
/ 07 сентября 2017

Как упоминалось в предыдущих ответах, активация профиля работает только со свойствами системы.

Но, проявив немного творческого подхода, вы можете достичь аналогичного результата (условное выполнение плагина), используя свойства 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. Но вы можете изменить свойство или переопределить его как свойство.

0 голосов
/ 18 апреля 2011

Как объяснил Мориц Хойзер, активация профиля основана на system свойствах.Однако, вы можете попробовать что-то вроде этого:

<project>
  ...
  <properties>
    <run.it>true</run.it>
  </properties>
  ...
  <profiles>
    <profile>
      <activation>
        <activeByDefault>${run.it}</activeByDefault>
      </activation>
      ...
    </profile>
  </profiles>
  ...
</project>

Идея состоит в том, чтобы определить флаг activeByDefault в <properties>.

0 голосов
/ 15 апреля 2011

Я думаю, что ваш вопрос похож на этот.

Активация профиля 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>
...