2011-07-27 131 views
17

我正在使用Maven 3.0.3。我需要在腳本中定義一個變量(「env」)。我在我的POM一個<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> 

但在運行命令「MVN編譯」失敗,因爲執法者的插件我設置需要我定義「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屬性添加到properties元素。 – bmargulies

回答

0

什麼我想你想要的是http://maven.apache.org/pom.html#Activation

+0

嗨,我編輯我的問題,包括我試圖(基本上添加「 true」),但我的構建仍然失敗,如果我離開「-P」指令(因爲執行插件不找到「env」屬性)。如果您可以提供更多信息和示例,則可以使用 - Dave – Dave

+1

@Dave您可以鍵入a: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

另請注意:如果通過其他激活規則或-P命令行更積極地選擇了任何其他配置文件,則不會選擇activeByDefault配置文件。 –