Maven - Testklassen überspringen

79

Gibt es eine einfache Möglichkeit, die Testklassen nicht zu erstellen?

mvn clean install -Dmaven.test.skip=true

Walter


quelle
3
Kompilierung überspringen oder Ausführung überspringen?
Bozho
Ich muss einen Steg ausführen, ohne die Testklassen zu kompilieren.

Antworten:

133

Laut der Dokumentation zum Maven Surefire Plugin -Dmaven.test.skip sollte sowohl die Kompilierung als auch die Ausführung der Tests übersprungen werden. Im Gegensatz dazu wird -DskipTestsnur die Testausführung übersprungen : Die Tests werden noch kompiliert.

Daniel
quelle
28
+1 Ich hasse die Benennung jedoch. Es ist völlig nicht-mir klar , warum skipTestsgerade überspringt die Ausführung der Tests und maven.text.skipüberspringt die Erstellung und Ausführung der Tests. Ich muss immer nachsehen, welches welches ist.
Joachim Sauer
17

Nur um explizit klar zu sein:

skipTests kompiliert alles in der <testSourceDirectory>, führt sie aber nicht aus .

maven.test.skipwird nicht kompiliert alle Tests, aber wird ausgeführt , alle kompilierten Tests , die ihren Weg in das gemacht <testOutputDirectory>.

Das Verhalten der obigen 2 ist also umgekehrt. Ich wollte nur darauf hinweisen, dass maven.test.skipdas Kompilieren UND Ausführen nicht übersprungen wird, wenn Testdateien entpackt / kopiert / etc. in <testOutputDirectory>.

Abhängig davon, welche Version von Maven Sie verwenden, gibt es auch eine, maven.test.skip.exec=truedie zusätzlich die Testausführung überspringt, ähnlich wie bei skipTests.

johntrepreneur
quelle
3
Das stimmt leider nicht, zumindest in Maven 3.0.5 und Maven-Compiler-Plugin 3.5.1. Sie können es in jedem Projekt testen mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=true, das Tests enthält: Kompiliert die Tests (aufgrund der ersten Paketausführung), führt sie jedoch nicht im zweiten Befehl aus. Angenommen, Standardverzeichnisse target/test-classesenthalten danach alle Tests, wurden jedoch nicht ausgeführt.
David Georg Reichelt
Dies ist die richtige Antwort und sollte als solche akzeptiert werden
Artem
8

Führen Sie beispielsweise eine Phase aus , die nicht enthalten test-compileist compile.

mvn clean compile
Pascal Thivent
quelle
8

Ich bin kein Experte bei Maven, aber was ich in meinem aktuellen Projekt verwende, ist:

mvn clean install -DskipTests=true

Abhängig von Ihrem Anwendungsfall verwenden Sie:

mvn compile -DskipTests=true

könnte auch für Sie arbeiten.

JimP
quelle
0

Ich habe in einer anderen Frage eine Problemumgehung gefunden, die eine Plugin-Ausführung überschreibt, indem standardmäßig das folgende Snippet in Ihre pom.xml eingefügt wird:

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

Dies scheint zu funktionieren, deaktiviert aber definitiv nicht die Phase, sondern die Standardaktionen, die ein Plugin in einer bestimmten Phase definiert.

Ioannis Sermetziadis
quelle