Estou usando um POM pai que define um plug-in que não quero que seja executado em um POM filho. Como posso desativar completamente o plug-in no child pom?
Restrição: Não consigo alterar o POM principal.
Estou usando um POM pai que define um plug-in que não quero que seja executado em um POM filho. Como posso desativar completamente o plug-in no child pom?
Restrição: Não consigo alterar o POM principal.
Respostas:
O seguinte funciona para mim ao desativar o Findbugs em um POM filho:
<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>
Nota: a definição completa do plug-in Findbugs está em nosso pai / super POM, portanto herdará a versão e assim por diante.
No Maven 3, você precisará usar:
<configuration>
<skip>true</skip>
</configuration>
para o plugin.
<id>…</id>
parte do POM pai, então funcionou para mim.
<skip>
parâmetro.
Veja se o plugin possui um parâmetro de configuração 'skip'. Quase todos fazem. se isso acontecer, basta adicioná-lo a uma declaração no filho:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Caso contrário, use:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<executions>
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
O tópico é antigo, mas talvez alguém ainda esteja interessado. A forma mais curta que encontrei é uma melhoria adicional no exemplo de λlex e bmargulies. A tag de execução será semelhante a:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2 pontos que quero destacar:
Após a publicação, ela já está no stackoverflow: em um projeto com vários módulos do Maven, como posso desativar um plug-in em um filho?
Eu sei que esse tópico é muito antigo, mas a solução de @Ivan Bondarenko me ajudou na minha situação.
Eu tinha o seguinte no meu 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>
O que eu queria era desativar a execução de generate-citrus-war
um perfil específico e esta era a solução:
<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>