Я использую родительский POM, который определяет плагин, который я не хочу запускать в дочернем POM. Как полностью отключить плагин в дочернем помпе?
Ограничение: Я не могу изменить сам родительский POM.
Я использую родительский POM, который определяет плагин, который я не хочу запускать в дочернем POM. Как полностью отключить плагин в дочернем помпе?
Ограничение: Я не могу изменить сам родительский POM.
Ответы:
Следующее работает для меня при отключении Findbugs в дочернем POM:
<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>
Примечание: полное определение плагина Findbugs находится в нашем POM родительского / супер POM, поэтому он унаследует версию и так далее.
В Maven 3 вам нужно будет использовать:
<configuration>
<skip>true</skip>
</configuration>
для плагина.
<id>…</id>
часть родительского POM, тогда это работало для меня.
<skip>
параметр.
Посмотрите, есть ли у плагина параметр конфигурации 'skip'. Почти все делают. если это так, просто добавьте его в объявление в дочернем элементе:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Если нет, то используйте:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<executions>
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Нить старая, но может кто-то еще заинтересовался. Самая короткая форма, которую я нашел, - это дальнейшее улучшение на примере из λlex и bmargulies. Тег выполнения будет выглядеть так:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2 балла, которые я хочу выделить:
После публикации обнаружил, что он уже находится в stackoverflow: в многомодульном проекте Maven, как я могу отключить плагин в одном дочернем элементе?
Я знаю, что эта ветка действительно старая, но решение от @Ivan Bondarenko помогло мне в моей ситуации.
У меня было следующее в моем 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>
То, что я хотел, было отключить выполнение generate-citrus-war
для определенного профиля, и это было решение:
<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>