Активация профиля по умолчанию

18

Я использую Maven 3.0.3. Мне нужно определить переменную в моем скрипте («env»). У меня есть <profiles> в моем pom, в котором я определяю переменную per <profile> element ...

<profile>
  <id>qa</id>
  <properties>
    <env>qa</env>
    ...
  </properties>
</profile>

В моем pom.xml, как мне активировать профиль, только если ни один не был указан с помощью опции командной строки «-P» (и, следовательно, установить переменную, если она не определена)? Я попробовал ниже,

<profile>
  <id>dev</id>
  <activation>
    <activeByDefault>true</activeByDefault>
    <property>
      <name>env</name>
      <value>dev</value>
    </property>
  </activation>
  <properties>
    <url>http://localhost:8080/manager</url>
    <server>nnadbmon-dev-tomcat</server>
  </properties>
</profile>

, но выполнение команды «mvn compile» завершается с ошибкой, потому что плагин принудительного запуска, который я настраивал, требует определения переменной «env». Вот код, который я запускаю для моего плагина-исполнителя ...

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <id>enforce-property</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireProperty>
            <property>env</property>
            <message>Environment missing.  This should be either dev, qa, or prod, specified as part of the profile (pass this as a parameter after -P).</message>
            <regex>^(dev|qa|production)$</regex>
            <regexMessage>Incorrect environment.  Expecting one of dev, qa, or prod.</regexMessage>
          </requireProperty>
        </rules>
        <fail>true</fail>
      </configuration>
    </execution>
  </executions>
</plugin>
    
задан Dave 27.07.2011 в 20:39
источник
  • Неясно, чего вы хотите. Вы хотите просто предоставить значение по умолчанию для свойства env? –  bmargulies 27.07.2011 в 20:40
  • Да, я хочу предоставить значение по умолчанию для свойства env. –  Dave 27.07.2011 в 21:28
  • , пожалуйста, напишите конфигурацию своего исполнителя. Фактически вы не определили свойство env. Вы просто установите профиль для запуска, если такое свойство существует и имеет определенное значение. Вы можете добавить свойство env по умолчанию к элементу свойств с другим значением. –  bmargulies 28.07.2011 в 06:21
  • Привет, я добавил свою конфигурацию. Однако я не понимаю остальную часть вашего комментария. Как я могу активировать профиль по умолчанию, если выше это не способ? –  Dave 29.07.2011 в 15:00
  • Почему вы используете исполнительный механизм вообще? Просто установите его «activeByDefault» и уберите принудительный элемент. –  bmargulies 29.07.2011 в 15:54

2 ответа

42

Я знаю, что это было давно, но у меня была эта проблема только сейчас, поэтому ... Вы должны сделать это:

<profile>
    <id>dev</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <env>dev</env>
        <url>http://localhost:8080/manager</url>
        <server>nnadbmon-dev-tomcat</server>
    </properties>
</profile>
    
ответ дан vhtc 05.02.2013 в 21:20
  • Также обратите внимание: профили activeByDefault не выбраны, если другие профили более активно выбираются с помощью других правил активации или командной строки -P. –  Greg Domjan 05.06.2013 в 20:00
0

Документация по тому, что я думаю, вы хотите Ссылка

    
ответ дан bmargulies 27.07.2011 в 20:41
  • Привет, я редактировал свой вопрос, чтобы включить то, что я пробовал (в основном добавляя «<activeByDefault> true </a></activeByDefault>»), но моя сборка все еще терпит неудачу, если я опускаю директиву «-P» (потому что плагин принудительного запуска isn «не найти свойство« env »). Если вы можете предоставить дополнительную информацию и примеры, это обостряется, - Дэйв –  Dave 27.07.2011 в 21:08
  • @Dave Вы можете ввести: mvn help: active-profiles, чтобы узнать, какие профили активны по умолчанию. –  Stephane 15.09.2014 в 00:28