Saya menggunakan POM induk yang mendefinisikan plugin yang saya tidak ingin dijalankan di POM anak. Bagaimana saya bisa menonaktifkan plugin di child pom sepenuhnya?
Kendala: Saya tidak dapat mengubah POM induk itu sendiri.
Saya menggunakan POM induk yang mendefinisikan plugin yang saya tidak ingin dijalankan di POM anak. Bagaimana saya bisa menonaktifkan plugin di child pom sepenuhnya?
Kendala: Saya tidak dapat mengubah POM induk itu sendiri.
Jawaban:
Berikut ini berfungsi untuk saya ketika menonaktifkan Findbugs di POM anak:
<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>
Catatan: definisi penuh dari plugin Findbugs ada di induk / POM super kami, jadi itu akan mewarisi versi dan seterusnya.
Di Maven 3, Anda harus menggunakan:
<configuration>
<skip>true</skip>
</configuration>
untuk plugin.
<id>…</id>
bagian dari POM induk, maka itu berhasil bagi saya.
<skip>
parameter.
Lihat apakah plugin memiliki parameter konfigurasi 'lewati'. Hampir semuanya melakukannya. jika ya, tambahkan saja ke deklarasi pada anak:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
Jika tidak, gunakan:
<plugin>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<executions>
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Utasnya sudah tua, tapi mungkin seseorang masih tertarik. Bentuk terpendek yang saya temukan adalah perbaikan lebih lanjut pada contoh dari λlex dan bmargulies. Tag eksekusi akan terlihat seperti:
<execution>
<id>TheNameOfTheRelevantExecution</id>
<phase/>
</execution>
2 poin yang ingin saya soroti:
Setelah memposting ternyata sudah dalam stackoverflow: Dalam proyek multi-modul Maven, bagaimana saya bisa menonaktifkan plugin dalam satu anak?
Saya tahu utas ini benar-benar tua tetapi solusi dari @Ivan Bondarenko membantu saya dalam situasi saya.
Saya memiliki yang berikut di blog saya 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>
Apa yang saya inginkan, adalah menonaktifkan eksekusi generate-citrus-war
untuk profil tertentu dan ini solusinya:
<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>