Maven - Saltar clases de prueba de construcción

80

¿Existe una forma sencilla de no crear las clases de prueba?

mvn clean install -Dmaven.test.skip=true
RUMANIA_engineer
fuente
3
¿Omitir la compilación o la ejecución?
Bozho
Necesito ejecutar jetty sin compilar las clases de prueba.

Respuestas:

134

De acuerdo con la documentación sobre el complemento Surefire de Maven, -Dmaven.test.skip debería omitir tanto la compilación como la ejecución de las pruebas. Por el contrario, -DskipTestssimplemente omite la ejecución de la prueba : las pruebas aún se compilan.

Daniel
fuente
28
+1 Sin embargo, odio los nombres. Para mí no es obvio por qué skipTestssimplemente omite la ejecución de las pruebas y maven.text.skipomite la compilación y ejecución de las pruebas. Siempre tengo que buscar cuál es cuál.
Joachim Sauer
18

Solo para ser explícitamente claro:

skipTests compilará cualquier cosa en el <testSourceDirectory>, pero no lo ejecutará .

maven.test.skipse NO recopilar todas las pruebas, pero ejecutará las pruebas compiladas que hicieron su camino hacia el <testOutputDirectory>.

Entonces, el comportamiento de los 2 anteriores es opuesto. Solo quería señalar que maven.test.skipno se salta la compilación Y la ejecución si los archivos de prueba se descomprimen / copian / etc. en <testOutputDirectory>.

Además, dependiendo de la versión de Maven que use, también hay una maven.test.skip.exec=trueque también omite la ejecución de la prueba similar a skipTests.

emprendedor
fuente
3
Desafortunadamente, eso 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=truecompilará las pruebas (debido a la primera ejecución del paquete) pero no las ejecutará en el segundo comando. Suponiendo directorios estándar, target/test-classescontendrán todas las pruebas después, pero no se han ejecutado.
David Georg Reichelt
Esta es la respuesta correcta y debe aceptarse como tal
Artem
8

Ejecuta una fase que no incluye test-compile, por ejemplo compile.

mvn clean compile
Pascal Thivent
fuente
8

No soy un experto en maven, pero lo que 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.

Esbelto
fuente
0

Encontré una solución alternativa en otra pregunta , que en realidad anula la ejecución de un complemento al agregar el siguiente fragmento en su pom.xml de forma predeterminada:

<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 deshabilita la fase, pero deshabilita las acciones predeterminadas que define un complemento en una fase específica.

Ioannis Sermetziadis
fuente