Dans un fichier parent POM de mon projet, j'ai un tel profil qui définit certaines configurations utiles pour ce projet (pour que je ne puisse pas me débarrasser de ce POM parent):
<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>
Mais dans mon projet, je voudrais simplement remplacer la configuration du plug-in maven-compiler afin d'utiliser jdk5 au lieu de jdk4 pour la compilation de classes de test.
C'est pourquoi j'ai fait cette section dans le POM de mon projet:
<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>
et ça ne marche pas ...
J'ai même essayé de remplacer la configuration dans les sections de plug-in classiques de mon POM (je veux dire, pas pour un profil spécifique mais pour tout mon POM).
Quel pourrait être le problème ?
Pour clarifier certaines de mes exigences:
C’est juste un problème d’héritage (étendre ou remplacer un profil, une configuration d’un POM de niveau supérieur), donc je pense que cela devrait être possible avec Maven 2.
Vous pouvez remplacer les configurations d’un pom parent en ajoutant le combine.self="override"
attribut à l’élément de votre pom.
Essayez de changer la configuration de votre plugin pour:
<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>
Pour plus d'informations sur le remplacement des plugins, voir: http://maven.Apache.org/pom.html
j'ai eu le même problème. Par défaut, mon plugin maven war excluait un fichier html. Mais dans mon profil de tests d'acceptation, je voulais inclure ce fichier. Ainsi, lorsque j'ai ajouté à nouveau le plugin Maven War, il ne remplaçait pas le paramètre par défaut.
Pour résoudre ce problème, j’ai passé l’attribut combine.self et a bien fonctionné.
construction par défaut:
<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>
Profil du test d'acceptation:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration combine.self="override"/>
</plugin>
Avez-vous essayé de désactiver le profil wls7 (depuis la version 2.0.10):
À partir de Maven 2.0.10, un ou plusieurs profils peuvent être désactivés à l'aide de la ligne de commande en préfixant leur identificateur avec le caractère '!'. ou '-' comme indiqué ci-dessous:
mvn groupId:artifactId:goal -P !profile-1,!profile-2
Cela peut être utilisé pour désactiver les profils marqués comme activeByDefault ou ceux qui seraient autrement activés via leur configuration d'activation.
Et ajoutez ensuite votre configuration dans un profil avec un nom différent ou directement dans votre pom.xml
.