2011-10-19 19 views

risposta

122

le seguenti opere per me quando la disabilitazione Findbugs in un POM bambino:

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

Nota: la definizione completa del plug-in di Findbug è nel nostro genitore/super-POM, quindi erediterà la versione e così via.

In Maven 3, è necessario utilizzare:

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

per il plugin.

+5

Anche se questo è" corretto ", cioè funziona, va notato che si tratta di una funzionalità non specificata (o almeno _undocumented_). Non esiste una fase ufficiale chiamata 'none'. Quindi, potresti anche metterti "qui". –

+1

Per me in Maven 3 questo non funziona. true come bmargulies lavori suggeriti – mibutec

+1

Ho aggiornato la risposta per includere Maven 3. –

38

Verificare se il plug-in ha un parametro di configurazione "salta". Quasi tutti lo fanno. se lo fa, basta aggiungerlo a una dichiarazione nel bambino:

<plugin> 
    <groupId>group</groupId> 
    <artifactId>artifact</artifactId> 
    <configuration> 
    <skip>true</skip> 
    </configuration> 
</plugin> 

In caso contrario, quindi utilizzare:

<plugin>  
<groupId>group</groupId> 
<artifactId>artifact</artifactId>  
<executions> 
    <execution> 
     <id>TheNameOfTheRelevantExecution</id> 
     <phase>none</phase> 
    </execution>  
</executions> 
</plugin> 
+4

provato entrambe le opzioni, ma non funzionano. – tobiasbayer

+0

Come nominare il plugin con cui si sta lavorando e la guida in esecuzione: effective-pom per vedere se l'esecuzione è corretta. – bmargulies

+1

Cerca anche plugin per pluginManagement. Il successivo sovrascrive il primo. – bmargulies

19

Il thread è vecchio, ma forse qualcuno è ancora interessato. Il modulo più breve che ho trovato è un ulteriore miglioramento dell'esempio di λlex e bmargulies. Il tag esecuzione sarà simile:

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

2 punti che voglio sottolineare:

  1. fase è impostato su nulla, che sembra meno hacky di 'none', anche se ancora un hack.
  2. id deve essere uguale all'esecuzione che si desidera sovrascrivere. Se non specifichi l'id per l'esecuzione, Maven lo farà implicitamente (in un modo non previsto da te in modo intuitivo).

Dopo aver postato la trovano è già in StackOverflow: In a Maven multi-module project, how can I disable a plugin in one child?

+1

Per la cronologia: gli ID di esecuzione predefiniti seguono semplici regole presentate in questa risposta: http://stackoverflow.com/a/34599117/7641 –

+1

Vale la pena notare che questa soluzione in realtà ** disabilita ** (come OP richiesto) il plug-in (per l'ID di esecuzione indicato) invece di fare affidamento su un'opzione "salta" specifica del plugin. – Zero3

Problemi correlati