2011-10-19 11 views

Odpowiedz

122

następujące prace dla mnie, gdy wyłączenie Findbugs w POM dzieci:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>findbugs-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>none</phase> 
     </execution> 
    </executions> 
</plugin> 

Uwaga: pełna definicja wtyczki Findbugs znajduje się w naszym nadrzędnym/super POM, więc dziedziczy ona wersję i tak dalej.

W Maven 3, trzeba użyć:

<configuration> 
     <skip>true</skip> 
</configuration> 

dla wtyczki.

+5

Chociaż jest to" poprawne ", to znaczy działa, należy zauważyć, że jest to funkcja nieokreślona (lub przynajmniej _udokumentowana_). Nie ma oficjalnej fazy o nazwie "brak". Więc równie dobrze możesz umieścić "foo". –

+1

Dla mnie w Maven 3 to nie działa. true podobnie jak sugerowały prace bermułkowe – mibutec

+1

Zaktualizowałem odpowiedź, aby dołączyć do Maven 3. –

38

Sprawdź, czy wtyczka ma "pominięcie" parametru konfiguracyjnego. Prawie wszyscy robią. jeśli tak, wystarczy dodać go do zgłoszenia się dziecka:

<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> 
+4

Próbowałem obie opcje, ale nie działają. – tobiasbayer

+0

Co powiesz na nazwę wtyczki, z którą pracujesz, i uruchomisz pomoc: effective-pom, aby sprawdzić, czy rzeczywiście wykonanie jest poprawne. – bmargulies

+1

Zwróć także uwagę na wtyczki i pluginManagement. Później zastępuje ten pierwszy. – bmargulies

19

Wątek jest stary, ale może ktoś nadal jest zainteresowany. Najkrótszą formą jaką znalazłem jest dalsza poprawa na przykładzie z λlex i bmargulies. Znacznik wykonanie będzie wyglądać następująco:

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

2 punkty Chcę podkreślić:

  1. fazy ustawiony jest do niczego, co wygląda mniej hacky niż „none”, choć nadal hack.
  2. id musi być taki sam, jak wykonanie, które chcesz przesłonić. Jeśli nie określisz id do wykonania, Maven zrobi to niejawnie (w sposób nieoczekiwany intuicyjnie przez ciebie).

Po zaksięgowaniu okazało się, że jest już w stackoverflow: In a Maven multi-module project, how can I disable a plugin in one child?

+1

Dla rekordu: domyślne identyfikatory wykonania są zgodne z prostymi regułami określonymi w tej odpowiedzi: http://stackoverflow.com/a/34599117/7641 –

+1

Warto zauważyć, że to rozwiązanie faktycznie ** wyłącza ** (jak OP poprosił o) wtyczkę (dla danego identyfikatora wykonania) zamiast polegać na specyficznej dla pluginów opcji "przeskocz". – Zero3

Powiązane problemy