Dans un fichier parent POM de mon projet, j'ai un tel profil définissant certaines configurations utiles pour ce projet (afin 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 juste remplacer la configuration du maven-compiler-plugin afin d'utiliser jdk5 au lieu de jdk4 pour compiler des 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 régulières 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:
- Je ne veux pas me débarrasser du POM parent et du profil (wls7) défini à l'intérieur (car j'ai besoin de nombreuses et nombreuses propriétés, configurations, ...) et ce n'est pas le processus dans mon entreprise.
- Une solution basée sur la duplication du POM parent et / ou du profil défini à l'intérieur n'est pas une bonne solution. Puisque si le responsable du
POM parent change quelque chose, je
devrais le signaler dans le mien.
C'est juste une question 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.
la source
Réponses:
Le remplacement des configurations d'un pom parent peut être effectué en ajoutant l'
combine.self="override"
attribut à l'élément dans votre pom.Essayez de changer la configuration de votre plugin pour:
Pour plus d'informations sur le remplacement des plugins, consultez: http://maven.apache.org/pom.html
la source
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 ce fichier inclus. Donc, quand j'ai ajouté à nouveau le plugin maven war, il n'a pas remplacé la valeur par défaut.
Pour résoudre ce problème, j'ai passé l'attribut combine.self et j'ai bien fonctionné.
Version par défaut:
Profil de test d'acceptation:
la source
Avez-vous essayé de désactiver le profil wls7 (depuis maven 2.0.10):
Et puis ajoutez votre configuration dans un profil avec un nom différent ou directement dans votre
pom.xml
.la source