2010-04-07 22 views

Respuesta

76

De acuerdo con la documentation en el Maven Plugin de éxito seguro, -Dmaven.test.skip debe saltar tanto compilación y la ejecución de las pruebas. Por el contrario, -DskipTests simplemente omite la prueba ejecución: las pruebas todavía se compilan.

+15

+1 No me gusta la nomenclatura, sin embargo. Es completamente obvio para mí por qué 'skipTests' solo salta * ejecutando * las pruebas y' maven.text.skip' salta * compilando y ejecutando * las pruebas. Siempre tengo que buscar cuál es cuál. –

+0

¡Sé lo que quieres decir! Solo sabía esta respuesta porque miré los documentos hoy;) – Daniel

+0

Vaya, nunca noté esta sutil diferencia. Gracias por señalarlo (y +1). –

7

Ejecutar un phase que no incluye test-compile, por ejemplo compile.

mvn clean compile 
+0

mejor respuesta! IMHO – huug

13

sólo para estar explícitamente claro:

skipTestscompilará nada en el <testSourceDirectory>, pero no se ejecute ellos.

maven.test.skip se no compila ninguna prueba, pero ejecutará las pruebas compiladas que hicieron su camino en el <testOutputDirectory>.

Entonces el comportamiento de los 2 anteriores es opuesto. Solo quería señalar que maven.test.skip no omite la compilación Y la ejecución si los archivos de prueba están desempacados/copiados/etc. en <testOutputDirectory>.

Además, dependiendo de la versión de Maven que esté utilizando, también hay maven.test.skip.exec=true que omite además la ejecución de prueba similar a skipTests.

+1

Desafortunadamente no es cierto, al menos en maven 3.0.5 y maven-compiler-plugin 3.5.1. Puede probarlo en cada proyecto que contenga pruebas: 'mvn clean package -DskipTests = true && mvn test -Dmaven.test.skip = true' compilará las pruebas (debido a la primera ejecución del paquete) pero no las ejecutará en el segundo mando. Asumiendo directorios estándar, 'target/test-classes' contendrá todas las pruebas después, pero no se han ejecutado. –

6

No soy un experto en experto, pero lo que yo uso en mi proyecto actual es:

mvn clean install -DskipTests=true 

Dependiendo de su caso de uso usando:

mvn compile -DskipTests=true 

podría funcionar para usted también.

0

He encontrado una solución alternativa en otro question, que en realidad se impone a una ejecución complemento añadiendo el siguiente fragmento de código en su pom.xml por defecto:

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

Esto parece funcionar, pero definitivamente no lo hace fase desactivar pero desactiva las acciones predeterminadas que un complemento define en una fase específica.

Cuestiones relacionadas