2011-09-08 12 views
11

Tengo dos perfiles Maven profile-A y profile-B. "B" solo debe activarse si "A" no está activado. Así que si yo llamaría se ejecutaMaven: ¿Activar solo el perfil A si el perfil B no está activado?

mvn install 

perfil-B (pero no Profile-A). Pero si yo llamaría

mvn install -Pprofile-A 

continuación, se ejecuta sólo el perfil-A (pero no profile-B).

¿Alguna pista sobre cómo debo escribir mi pom.xml para lograr esto?

ya he intentado esto, pero no funciona:

<profiles> 
    <profile> 
    <id>profile-A</id> 
    <activation> 
     <activeByDefault>false</activeByDefault> 
    </activation> 
    ... 
    </profile> 

    <profile> 
    <id>profile-B</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
     <property> 
     <name>!profile-A</name> 
     </property>  
     ... 
    </activation> 
    ... 
    </profile> 
</profiles> 

Respuesta

8

Creo que para la línea de comandos ejemplo funcione como se espera, todo lo que necesita es el perfil de <activeByDefault>true</activeByDefault> B.

http://maven.apache.org/guides/introduction/introduction-to-profiles.html estados:

Todos los perfiles que están activos de forma predeterminada se desactivan automáticamente cuando se activa un perfil en el POM en la línea de comando o mediante su activación. higo.

+0

Solo quería aclarar un punto que me dejó perplejo durante unos 15 minutos. De la última versión del enlace anterior con respecto a 'activeByDefault' (énfasis mío):" Este perfil estará activo automáticamente para todas las construcciones a menos que otro perfil ** en el mismo POM ** se active utilizando uno de los métodos descritos anteriormente. " En mi caso, agregué el perfil B al POM principal y el perfil A a un POM de hoja en una compilación de varios módulos. En esta configuración, el perfil B no se deshabilitó cuando el perfil A se activó a través de la línea de comando. Mover los perfiles A y B al mismo POM produjo el comportamiento deseado. –

Cuestiones relacionadas