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

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.


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.


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

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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.