En un archivo principal POM de mi proyecto, tengo un perfil que define algunas configuraciones útiles para este proyecto (para que no pueda deshacerme de este POM principal):
<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 solo me gustaría anular la configuración de maven-compiler-plugin para usar jdk5 en lugar de jdk4 para compilar clases de prueba.
Por eso 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 funciona ...
Incluso intenté anular la configuración en las secciones de complementos regulares de mi POM (quiero 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 empresa.
- Una solución basada en duplicar el POM padre y / o el perfil definido en su interior no es buena. Ya que si el responsable del
POM padre cambiara algo,
tendría que reportarlo en el mío.
Es solo una cuestión de herencia (extender o anular un perfil, una configuración de un POM de nivel superior), así que creo que debería ser posible con Maven 2.
fuente
Respuestas:
Se pueden anular las configuraciones de un pom principal agregando el
combine.self="override"
atributo al elemento en su pom.Intente cambiar la configuración de su complemento a:
Para obtener más información sobre la sustitución de complementos, consulte: http://maven.apache.org/pom.html
fuente
Tuve el mismo problema. De forma predeterminada, mi complemento de guerra maven excluía un archivo html. Pero en mi perfil de pruebas de aceptación quería que se incluyera este archivo. Entonces, cuando agregué el complemento de guerra de maven nuevamente, no anuló el predeterminado.
Para resolver este problema, pasé el atributo combine.self y funcionó bien.
Construcción predeterminada:
Perfil de prueba de aceptación:
fuente
¿Intentó desactivar el perfil wls7 (desde maven 2.0.10):
Y luego agregue su configuración en un perfil con un nombre diferente o directamente en su
pom.xml
.fuente