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