Używam macierzystego POM, który definiuje wtyczkę, której nie chcę uruchamiać w podrzędnym POM. Jak mogę całkowicie wyłączyć wtyczkę w pompie dziecięcym?
Ograniczenie: nie mogę zmienić samego macierzystego POM.
Używam macierzystego POM, który definiuje wtyczkę, której nie chcę uruchamiać w podrzędnym POM. Jak mogę całkowicie wyłączyć wtyczkę w pompie dziecięcym?
Ograniczenie: nie mogę zmienić samego macierzystego POM.
Odpowiedzi:
Podczas wyłączania funkcji Findbugs w dziecku 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>
Uwaga: pełna definicja wtyczki Findbugs znajduje się w naszym nadrzędnym / super POM, więc odziedziczy wersję i tak dalej.
W Maven 3 będziesz potrzebować:
<configuration>
<skip>true</skip>
</configuration>
dla wtyczki.
<id>…</id>
część macierzystego POM, wtedy u mnie zadziałało.
<skip>
parametr.
Sprawdź, czy wtyczka ma parametr konfiguracyjny „pomiń”. Prawie wszyscy. jeśli tak, po prostu dodaj to do deklaracji w dziecku:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Jeśli nie, użyj:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<executions>
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Wątek jest stary, ale może ktoś jest nadal zainteresowany. Najkrótsza forma, jaką znalazłem, to dalsze ulepszenia na przykładzie λlex i bmargulies. Tag wykonania będzie wyglądał następująco:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2 punkty, które chcę podkreślić:
Po wysłaniu okazało się, że jest już w stackoverflow: W wielomodułowym projekcie Maven, jak mogę wyłączyć wtyczkę w jednym dziecku?
Wiem, że ten wątek jest naprawdę stary, ale rozwiązanie od @Ivan Bondarenko pomogło mi w mojej sytuacji.
W moim 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>
Zależało mi na wyłączeniu wykonywania generate-citrus-war
dla określonego profilu i takie było rozwiązanie:
<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>