run example compile maven pom.xml

example - maven use profile command line



Maven: ¿Cómo activo un perfil desde la línea de comandos? (4)

Este es un fragmento de mi pom.xml. Intenté lo siguiente, pero el perfil no se activó.

mvn clean install -Pdev1 mvn clean install -P dev1

Cuando probé la mvn help:active-profiles ningún perfil estaba listado como activo. Si configuro <activeByDefault> para dev1 en true y ejecuto mvn help:active-profiles , me muestra que el perfil está activado.

<profile> <id>dev1</id> <activation> <activeByDefault>false</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemPropertyVariables> <env>local</env> <properties.file>src/test/resources/dev1.properties</properties.file> </systemPropertyVariables> <suiteXmlFiles> <suiteXmlFile>src/test/resources/dev1.testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>dev2</id> <activation> <activeByDefault>false</activeByDefault> </activation> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemPropertyVariables> <env>local</env> <properties.file>src/test/resources/dev2.properties</properties.file> </systemPropertyVariables> <suiteXmlFiles> <suiteXmlFile>src/test/resources/dev2.testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> </plugins> </build> </profile>

Me pregunto por qué mi perfil no se activa. ¿Alguien ha encontrado un problema similar?


La activación por propiedades del sistema se puede hacer de la siguiente manera

<activation> <property> <name>foo</name> <value>bar</value> </property> </activation>

Y ejecute la compilación de mvn con -D para establecer la propiedad del sistema

mvn clean install -Dfoo=bar

Este método también ayuda a seleccionar perfiles en la dependencia transitiva de los artefactos del proyecto.


Me he encontrado con este problema y he resuelto el problema mencionado agregando -DprofileIdEnabled=true parámetro al ejecutar el comando mvn cli.

Ejecute su comando mvn cli como: mvn clean install -Pdev1 -DprofileIdEnabled=true .

Además de esta solución, no es necesario que elimine las configuraciones de activeByDefault en su POM mencionado como respuestas previas.

Espero que esta respuesta resuelva tu problema.


No lo verás con

mvn help:active-profiles

ya que no hay -Pdev1 en el comando.

Lo vería con la mvn help:active-profiles -Pdev1 (pero obviamente no tiene sentido).

Los comandos que mostró:

mvn clean install -Pdev1 mvn clean install -P dev1

son correctos El problema probablemente no es que el perfil no esté activado, sino que no hace lo que usted espera.

Para asegurarse de que ese sea el caso, puede establecer activeByDefault como verdadero en el perfil, luego ejecute mvn help:active-profiles para ver que está efectivamente activado, luego inicie mvn install y verifique si el perfil hace lo que espera (lo cual probablemente no sea el caso).


Solo elimine la sección de activación, no sé por qué -Pdev1 no anula la activación falsa por defecto. Pero si omites esto:

<activation> <activeByDefault>false</activeByDefault> </activation>

entonces su perfil se activará solo después de la declaración explícita como -Pdev1