2011-07-27 16 views
17

Estoy usando Maven 3.0.3. Necesito definir una variable en mi script ("env"). Tengo una sección <profiles> en mi pom en el que defino la variable por <profile> elemento ...Activando un perfil de forma predeterminada

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

En mi pom.xml, ¿cómo activo un perfil sólo si ninguno se especifica a través de la "-P" opción de línea de comando (y por lo tanto establecer la variable si no estaba definida)? Probé el siguiente,

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

pero corriendo el comando "mvn compile" falla porque el plugin ejecutor He definido requiere que defino una "env" variable. Aquí está el código corro para mi plugin de ejecutor ...

<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

No está claro lo que quieres. ¿Desea simplemente proporcionar un valor predeterminado para la propiedad 'env'? – bmargulies

+0

Sí, deseo proporcionar un valor predeterminado para la propiedad env. – Dave

+1

publique su configuración de enforcer. De hecho, no ha definido una propiedad 'env'. Usted acaba de establecer un perfil para ejecutar si dicha propiedad existe y tiene un cierto valor. Puede agregar una propiedad de env predeterminada al elemento properties con algún otro valor. – bmargulies

Respuesta

0

La documentación de lo que pienso que usted quiere es http://maven.apache.org/pom.html#Activation

+0

Hola, edité mi pregunta para incluir lo que probé (básicamente agregué " true"), pero mi compilación sigue fallando si dejo la directiva "-P" (porque el complemento de enforcer no está encontrar la propiedad "env"). Si puede proporcionar información y ejemplos adicionales, tiene nombre, Dave – Dave

+1

@Dave Puede escribir en a: mvn help: active-profiles para ver qué perfiles están activos de forma predeterminada. – Stephane

41

Sé que fue hace mucho tiempo, pero tuve este problema en este momento, entonces ... Deberías hacer eso:

<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

También tenga en cuenta que los perfiles activeByDefault no se seleccionan si cualquier otro perfil se selecciona más activamente a través de otras reglas de activación o -P línea de comando. –

Cuestiones relacionadas