2012-02-14 19 views
7

È possibile eseguire una generazione di test Maven (mvn clean test) in un progetto multi-modulo maven e saltare/ignorare il test di un particolare modulo? come -Dmaven.test.skip=true ma per un particolare modulo e non tutti i moduli? Non voglio cambiare il surefire <configuration> per includere <skipTests>true</skipTests> per il modulo che voglio saltare per i test. Volevo sapere se questo può essere fatto dalla riga di comando. Ho bisogno di questo perché nel mio progetto ho molti moduli e in particolare uno o due impiegano molto tempo per eseguire il test, quindi quando voglio testare solo un paio di moduli mi piacerebbe saltare questo tempo prendendo moduli a cui non ho fatto qualsiasi cambiamento.Ignora un modulo durante la generazione di test maven per il progetto multi-modulo maven

+1

Sì. Hai bisogno di leggere su [profili maven] (http://maven.apache.org/guides/introduction/introduction-to-profiles.html) –

risposta

5

È davvero un problema modificare la configurazione del plugin surefire? Perché si potrebbe cambiare una volta solo nel modulo ...

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <skipTests>${skip.foo.module.tests}</skipTests> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

... e delegare il valore true/false del tag skipTests a una proprietà Maven, attivato da un profilo dedicato:

<properties> 
    <skip.foo.module.tests>false</skip.foo.module.tests> 
</properties> 

<profiles> 
    <profile> 
     <id>SKIP_FOO_MODULE_TESTS</id> 
     <properties> 
      <skip.foo.module.tests>true</skip.foo.module.tests> 
     </properties> 
    </profile> 
</profiles> 

in modo che si potrebbe disattivare le prove in modulo Foo con la riga di comando:

mvn prova pulita -P SKIP_FOO_MODULE_TESTS

+0

Grazie Yanflea. Anche se questo non era esattamente quello che volevo, ma questo funziona per me. Con questo approccio posso avere un profilo alla volta, quindi nel caso in cui volessi saltare i test per più di un modulo, non posso. Ma comunque sarebbe un po 'troppo. – Jay

+0

I tuoi moduli possono condividere lo stesso padre gen, in cui definisci i tuoi profili. Cosa ti impedisce di utilizzare lo stesso profilo per saltare i test su diversi moduli figlio contemporaneamente? – Yanflea

+0

Funzionerà solo se voglio saltare gli stessi moduli tutto il tempo. Quando sto sviluppando, qualche volta apporto il cambiamento al modulo-1 che non influenza il modulo-7 e il modulo-9, quindi vorrei saltarlo, ma in un altro momento se apporto modifiche al modulo-3, che influenza modulo-7, ma non modulo-9, in tal caso vorrei saltare solo il modulo-9. Per tali scenari, la condivisione dei profili in genitore non funzionerà. Ora non voglio inquinare il mio genitore con tutti i tipi di profili saltando i test per diversi moduli e combinazioni. – Jay

0

È possibile farlo con un profilo che ha ignorato la configurazione di surefire. Ciò ti consentirebbe di mantenere il test in esecuzione la maggior parte del tempo, ma quando volevi saltare i test per uno dei moduli a volte, potresti invocare quel profilo. È quindi possibile escludere tutti i test utilizzando i test di salto oppure è possibile utilizzare l'opzione escludi per escludere solo uno o due test di lunga durata.

Problemi correlati