2011-07-27 4 views
17

Я использую Maven 3.0.3. Мне нужно определить переменную в моем скрипте («env»). У меня есть <profiles> раздел в моем ПОМ, в которых я определяю переменную в <profile> элемент ...Активация профиля по умолчанию

<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> 

но работает команда «МВН компиляции» не удается, потому что силовика плагин настроить требует, чтобы я определить «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> 
+0

Непонятно, что вы хотите. Вы хотите просто предоставить значение по умолчанию для свойства env? – bmargulies

+0

Да, я хочу предоставить значение по умолчанию для свойства env. – Dave

+1

, пожалуйста, напишите конфигурацию своего исполнителя. Фактически вы не определили свойство env. Вы просто установите профиль для запуска, если такое свойство существует и имеет определенное значение. Вы можете добавить свойство env по умолчанию к элементу свойств с другим значением. – bmargulies

ответ

0

документация для того, что я думаю, что вы хотите http://maven.apache.org/pom.html#Activation

+0

Привет, я редактировал свой вопрос, чтобы включить то, что я пробовал (в основном добавляя « true»), но моя сборка все еще терпит неудачу, если я опускаю директиву «-P» (поскольку плагин принудительного исполнения не является нахождение свойства «env»). Если вы можете предоставить дополнительную информацию и примеры, это связано, - Dave – Dave

+1

@Dave Вы можете ввести: mvn help: active-profiles, чтобы узнать, какие профили активны по умолчанию. – Stephane

41

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

<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> 
+5

Также обратите внимание: профили activeByDefault не выбираются, если какие-либо другие профили более активно выбираются с помощью других правил активации или командной строки -P. –

Смежные вопросы