J'utilise un POM parent qui définit un plugin que je ne souhaite pas exécuter dans un POM enfant. Comment puis-je désactiver complètement le plugin dans le pom enfant?
Contrainte: je ne peux pas modifier le POM parent lui-même.
J'utilise un POM parent qui définit un plugin que je ne souhaite pas exécuter dans un POM enfant. Comment puis-je désactiver complètement le plugin dans le pom enfant?
Contrainte: je ne peux pas modifier le POM parent lui-même.
Réponses:
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>
<id>ID_AS_IN_PARENT</id> <!-- id is necessary sometimes -->
<phase>none</phase>
</execution>
</executions>
</plugin>
Remarque: la définition complète du plugin Findbugs est dans notre parent / super POM, donc il héritera de la version et ainsi de suite.
Dans Maven 3, vous devrez utiliser:
<configuration>
<skip>true</skip>
</configuration>
pour le plugin.
<id>…</id>
partie du POM parent, puis cela a fonctionné pour moi.
<skip>
paramètre.
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>
Sinon, 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 de l'exemple de λlex et bmargulies. La balise d'exécution ressemblera à:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2 points que je souhaite souligner:
Après avoir posté trouvé qu'il est déjà dans stackoverflow: Dans un projet multi-module Maven, comment puis-je désactiver un plugin chez 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 ce qui suit 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, c'était 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>