java maven build maven-3 maven-profiles

java - Activar el perfil de Maven si otro perfil no está activado



build maven-3 (1)

La pregunta está relacionada con Maven: ¿Activar solo el perfil A si el perfil B no está activado? , pero es más específico.

Si escribo uno de los siguientes:

mvn clean install -PspecificProfile mvn clean install -Dsmth -PspecificProfile mvn clean install -Dsmth -PspecificProfile,anotherProfile

Entonces quiero activar el perfil de perfil specificProfile . (+ los perfiles adicionales especificados)

Si escribo algo mas como:

mvn install mvn clean install mvn clean install -Dsmth mvn clean install -Dsmth -PanotherProfile mvn clean install -Dsmth -PdefaultProfile mvn clean install -Dsmth -PdefaultProfile,anotherProfile

luego quiero activar el defaultProfile (+ los perfiles adicionales especificados).

Idea:

if ( specific profile P is used via command line ) { activate P; } else { activate the default profile; } activate other specified profiles;

Ejemplos:

mvn ... // default mvn ... -PspecificProfile // specificProfile (no default!) mvn ... -Px // default + x mvn ... -Px,y // default + x + y mvn ... -Px,specificProfile // x + specificProfile (no default!) mvn ... -Px,specificProfile,y // x + specificProfile + y (no default!)

Intenté hacer algo como esto (en pom.xml ):

<profile> <id>defaultProfile</id> <activation> <property>!x</property> </activation> ... </profile> <profile> <id>specificProfile</id> <properties> <x>true</x> </properties> ... </profile>

pero no funciona


El perfil x será el único perfil activo cuando llame a mvn ... -P x . Razón de la documentación maven:

Profiles can be explicitly specified using the -P CLI option. This option takes an argument that is a comma-delimited list of profile-ids to use. When this option is specified, no profiles other than those specified in the option argument will be activated.

Aquí hay una solución:

<profiles> <profile> <id>default</id> <activation> <activeByDefault>true</activeByDefault> <property> <name>!specific</name> </property> </activation> </profile> <profile> <id>specific</id> <activation> <property> <name>specific</name> </property> </activation> </profile> <profile> <id>x</id> <activation> <property> <name>x</name> </property> </activation> </profile> <profile> <id>y</id> <activation> <property> <name>y</name> </property> </activation> </profile> </profiles>

Los comandos:

mvn ... // default mvn ... -Dspecific // specific Profile (no default!) mvn ... -Dx // default + x mvn ... -Dx -Dy // default + x + y mvn ... -Dx -Dspecific // x + specific Profile (no default!) mvn ... -Dx -Dspecific -Dy // x + specific Profile + y (no default!)

Ejecute mvn ... help:active-profiles para obtener la lista de los identificadores de los perfiles activos.