J'utilise un POM parent qui définit un plug-in que je ne souhaite pas exécuter dans un POM enfant. Comment puis-je désactiver complètement le plug-in du pom enfant?
Contrainte: Je ne peux pas changer le POM parent lui-même.
Ce qui suit fonctionne pour moi lors de la désactivation de Findbugs dans un POM enfant:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<executions>
<execution>
<phase>none</phase>
</execution>
</executions>
</plugin>
Remarque: la définition complète du plug-in Findbugs se trouve dans notre parent/super POM, de sorte qu'il héritera de la version, etc.
Dans Maven 3, vous devrez utiliser:
<configuration>
<skip>true</skip>
</configuration>
pour le plugin.
Voir si le plugin a un paramètre de configuration 'skip'. Presque tous le font. si c'est le cas, ajoutez-le simplement à une déclaration dans l'enfant:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Si non, alors utilisez:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<executions>
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Le fil est vieux, mais peut-être que quelqu'un est toujours intéressé. La forme la plus courte que j'ai trouvée est une amélioration supplémentaire par rapport à l'exemple de λLex et de bmargulies. La balise d'exécution ressemblera à:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2 points que je veux mettre en évidence:
Une fois que la publication a été trouvée, elle est déjà dans stackoverflow: Dans un projet multi-module Maven, comment puis-je désactiver un plugin dans un enfant?
Je sais que ce fil est vraiment vieux mais la solution de @Ivan Bondarenko m'a aidé dans ma situation.
J'ai eu le suivant dans mon pom.xml
.
<build>
...
<plugins>
<plugin>
<groupId>com.consol.citrus</groupId>
<artifactId>citrus-remote-maven-plugin</artifactId>
<version>${citrus.version}</version>
<executions>
<execution>
<id>generate-citrus-war</id>
<goals>
<goal>test-war</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Ce que je voulais, était de désactiver l'exécution de generate-citrus-war
pour un profil spécifique et c'était la solution:
<profile>
<id>it</id>
<build>
<plugins>
<plugin>
<groupId>com.consol.citrus</groupId>
<artifactId>citrus-remote-maven-plugin</artifactId>
<version>${citrus.version}</version>
<executions>
<!-- disable generating the war for this profile -->
<execution>
<id>generate-citrus-war</id>
<phase/>
</execution>
<!-- do something else -->
<execution>
...
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>