mvn example compile maven-2 plugins configuration profile

maven 2 - example - Maven: ¿Es posible anular la configuración de un complemento ya definido para un perfil en un POM padre?



mvn-u option (3)

¿Intentó desactivar el perfil de wls7 (desde maven 2.0.10):

Comenzando con Maven 2.0.10, uno o más perfiles pueden ser desactivados usando la línea de comando prefijando su identificador con el carácter ''!'' o ''-'' como se muestra a continuación:

mvn groupId:artifactId:goal -P !profile-1,!profile-2

Esto se puede usar para desactivar perfiles marcados como activeByDefault o perfiles que de otra manera se activarían a través de su configuración de activación.

Y luego agregue su configuración en un perfil con un nombre diferente o directamente en su pom.xml .

En un archivo padre POM de mi proyecto, tengo un perfil que define algunas configuraciones útiles para este proyecto (para que no pueda deshacerme de este POM padre):

<profile> <id>wls7</id> ... <build> <plugins> <!-- use java 1.4 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <fork>true</fork> <source>1.4</source> <target>1.4</target> <meminitial>128m</meminitial> <maxmem>1024m</maxmem> <executable>%${jdk14.executable}</executable> </configuration> </plugin> </plugins> </build> ... </profile>

Pero en mi proyecto, me gustaría sobrescribir la configuración del plugin maven-compiler para usar jdk5 en lugar de jdk4 para compilar test-classes.

Es por eso que hice esta sección en el POM de mi proyecto:

<profiles> <profile> <id>wls7</id> <activation> <property> <name>jdk</name> <value>4</value> </property> </activation> <build> <directory>target-1.4</directory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <id>my-testCompile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> <configuration> <fork>true</fork> <executable>${jdk15.executable}</executable> <compilerVersion>1.5</compilerVersion> <source>1.5</source> <target>1.5</target> <verbose>true</verbose> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> ... </profiles>

y no está funcionando ...

Incluso traté de anular la configuración en las secciones regulares de complementos de mi POM (es decir, no para un perfil específico, sino para todo mi POM).

Cual podría ser el problema ?

Para aclarar algunos de mis requisitos:

  • No quiero deshacerme del POM padre y el perfil (wls7) definido dentro de él (ya que necesito muchas y muchas propiedades, configuraciones, ...) y ese no es el proceso en mi compañía.
  • Una solución basada en la duplicación del POM principal y / o el perfil definido en su interior no es buena. Dado que si el responsable de
    el padre POM cambia algo, yo
    tendría que reportarlo en el mío.

Es solo una cuestión de herencia (ampliar o anular un perfil, una configuración de un POM de nivel superior), así que creo que debería ser posible con maven2.


Se pueden hacer configuraciones sobresalientes desde un pom padre agregando el atributo combine.self="override" al elemento en su pom.

Intente cambiar la configuración de su complemento a:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <id>my-testCompile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> <configuration combine.self="override"> <fork>true</fork> <executable>${jdk15.executable}</executable> <compilerVersion>1.5</compilerVersion> <source>1.5</source> <target>1.5</target> <verbose>true</verbose> </configuration> </execution> </executions> </plugin>

Para obtener más información sobre cómo anular los complementos, consulte: http://maven.apache.org/pom.html


tuve el mismo problema Por defecto, mi plugin maven war excluía un archivo html. Pero en mi perfil de pruebas de aceptación quería este archivo incluido. Entonces, cuando agregué el plugin maven war nuevamente, no anulé el predeterminado.

Para resolver este problema, pasé el atributo combine.self y funcionó bien.

Compilación predeterminada:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration> <packagingExcludes>swagger-ui/client.html</packagingExcludes> </configuration> </plugin>

Perfil de prueba de aceptación:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.4</version> <configuration combine.self="override"/> </plugin>