Désactiver un plugin Maven défini dans un POM parent

j'utilise un parent POM qui définit un plugin que je ne veux pas faire tourner dans un child POM. Comment puis-je désactiver complètement le plugin dans le pom enfant?

contrainte: Je ne peux pas changer le POM parent lui-même.

119
demandé sur tobiasbayer 2011-10-19 16:15:50

4 réponses

les travaux suivants 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>

Note: 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.

150
répondu Alex 2015-03-19 07:52:04

voir si le plugin a un paramètre de configuration 'skip'. Près de tous les faire. si c'est le cas, il suffit de l'ajouter à une déclaration dans l'enfant:

<plugin>
   <groupId>group</groupId>
   <artifactId>artifact</artifactId>
   <configuration>
     <skip>true</skip>
   </configuration>
</plugin>

dans la négative, utiliser:

<plugin>    
<groupId>group</groupId>   
 <artifactId>artifact</artifactId>    
<executions>
     <execution>
       <id>TheNameOfTheRelevantExecution</id>
       <phase>none</phase>
     </execution>    
</executions>  
</plugin>
45
répondu bmargulies 2011-10-19 12:39:20

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 autre amélioration par rapport à l'exemple de λlex et bmargulies. La balise d'exécution ressemblera à:

<execution>
    <id>TheNameOfTheRelevantExecution</id>
    <phase/>
</execution>

2 points que je veux souligner:

  1. phase est prévu pour rien, ce qui semble de moins hacky que "aucun", mais encore un hack.
  2. id doit être le même que l'exécution que vous voulez annuler. Si vous ne spécifiez pas id pour l'exécution, Maven le fera implicitement (d'une manière que vous n'attendez pas intuitivement).

après l'affichage trouvé, il est déjà dans stackoverflow: dans un projet Maven multi-modules, Comment puis-je désactiver un plugin en un seul enfant?

27
répondu Ivan Bondarenko 2017-11-06 09:38:45

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>
1
répondu Liviu Ilea 2018-03-20 09:36:48