2010-04-07 15 views

risposta

76

Secondo la documentation sulla Maven Surefire plugin, -Dmaven.test.skipdovrebbe saltare sia compilazione e l'esecuzione dei test. Al contrario, -DskipTests salta il test esecuzione: i test sono ancora compilati.

+15

+1 Odio la denominazione, tuttavia. Per me non è affatto ovvio perché 'skipTests' salta * eseguendo * i test e' maven.text.skip' salta * compilando ed eseguendo * i test. Devo sempre cercare qual è quello. –

+0

So cosa intendi! Sapevo solo questa risposta perché ho visto i documenti all'inizio di oggi;) – Daniel

+0

Wow, non ho mai notato questa sottile differenza. Grazie per averlo indicato (e +1). –

7

Eseguire un phase che non include test-compile, per esempio compile.

mvn clean compile 
+0

risposta migliore! IMHO – huug

13

Giusto per essere in modo inequivocabile:

skipTestscompilerà nulla nel <testSourceDirectory>, ma non eseguirà loro.

maven.test.skip sarà NON compilare alcun test, ma eseguirà qualsiasi test compilati che hanno fatto la loro strada nel <testOutputDirectory>.

Quindi il comportamento del precedente 2 è opposto. Volevo solo sottolineare che maven.test.skip non salta la compilazione E l'esecuzione se i file di test sono scompattati/copiati/ecc. in <testOutputDirectory>.

Inoltre, a seconda della versione di Maven utilizzata, c'è anche maven.test.skip.exec=true che ignora inoltre l'esecuzione del test simile a skipTests.

+1

Questo purtroppo non è vero, almeno in Maven 3.0.5 e maven-compilatore-plugin 3.5.1. Puoi testarlo in ogni progetto contenente test: 'pacchetto mvn clean -DskipTests = true && mvn test -Dmaven.test.skip = true' compilerà i test (a causa della prima esecuzione del pacchetto) ma non li eseguirà nel secondo comando. Supponendo che le directory standard, 'target/test-classes' conterranno tutti i test in seguito, ma non sono stati eseguiti. –

6

Io non sono un esperto a Maven, ma quello che uso nel mio progetto attuale è:

mvn clean install -DskipTests=true 

A seconda del caso d'uso con:

mvn compile -DskipTests=true 

potrebbe funzionare anche per te.

0

Ho trovato un work-around in un altro question, che sostituisce in realtà un plugin di esecuzione aggiungendo il seguente frammento nel pom.xml per impostazione predefinita:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>default-testCompile</id> 
      <phase>none</phase> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Questo sembra funzionare, ma sicuramente non lo fa fase di disabilitazione ma disabilita le azioni predefinite che un plugin definisce in una fase specifica.

Problemi correlati