2010-04-07 7 views

Répondre

76

Selon le documentation sur le plugin Maven Surefire, -Dmaven.test.skipdevrait sauter à la fois la compilation et l'exécution des tests. En revanche, -DskipTests saute simplement le test exécution: les tests sont toujours compilés.

+15

+1 Je déteste le nom, cependant. Je ne comprends absolument pas pourquoi 'skipTests' saute simplement * les tests et' maven.text.skip' saute * compile et exécute * les tests. Je dois toujours chercher lequel est quoi. –

+0

Je sais ce que tu veux dire! Je connaissais seulement cette réponse parce que j'ai regardé les docs plus tôt aujourd'hui;) – Daniel

+0

Wow, je n'ai jamais remarqué cette différence subtile. Merci de l'avoir signalé (et +1). –

7

Exécuter un phase qui ne comprend pas test-compile, par exemple compile.

mvn clean compile 
+0

meilleure réponse! IMHO – huug

13

Juste pour être explicitement clair:

skipTestscompilera quoi que ce soit dans le <testSourceDirectory>, mais ne sera pas exécuter les.

maven.test.skip se PAS compiler tous les tests, mais exécutera des tests compilés qui ont fait leur chemin dans le <testOutputDirectory>.

Donc le comportement de 2 ci-dessus est opposé. Je voulais juste faire remarquer que maven.test.skip n'ignore pas la compilation et l'exécution si les fichiers de test sont déballés/copiés/etc. en <testOutputDirectory>.

En outre, selon la version de votre Maven à l'aide, il y a aussi maven.test.skip.exec=true qui permet de sauter plus l'exécution de test similaire à skipTests.

+1

Ce n'est malheureusement pas vrai, au moins dans maven 3.0.5 et maven-compiler-plugin 3.5.1. Vous pouvez le tester dans chaque projet contenant des tests: 'mvn clean package -DskipTests = true && mvn test -Dmaven.test.skip = true' compilera les tests (à cause de la première exécution du paquet) mais ne les exécutera pas dans la seconde commander. En supposant des répertoires standards, 'target/test-classes' contiendra tous les tests par la suite, mais ils n'ont pas été exécutés. –

6

Je ne suis pas un expert à maven, mais ce que je l'utilise dans mon projet en cours est: En fonction de votre cas d'utilisation

mvn clean install -DskipTests=true 

utilisant:

mvn compile -DskipTests=true 

peut travailler pour vous aussi.

0

J'ai trouvé un travail autour dans un autre question, qui remplace en fait l'exécution d'un plug-in en ajoutant l'extrait suivant dans votre pom.xml par défaut:

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

Cela semble fonctionner mais ne certainement pas la phase de désactivation mais désactive les actions par défaut qu'un plugin définit à une phase spécifique.

Questions connexes