Gibt es eine einfache Möglichkeit, die Testklassen nicht zu erstellen?
mvn clean install -Dmaven.test.skip=true
Walter
Antworten:
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 -DskipTests
nur die Testausführung übersprungen : Die Tests werden noch kompiliert.
skipTests
gerade ü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.
Nur um explizit klar zu sein:
skipTests
kompiliert alles in der <testSourceDirectory>
, führt sie aber nicht aus .
maven.test.skip
wird 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.skip
das 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=true
die zusätzlich die Testausführung überspringt, ähnlich wie bei skipTests.
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-classes
enthalten danach alle Tests, wurden jedoch nicht ausgeführt.
Führen Sie beispielsweise eine Phase aus , die nicht enthalten test-compile
ist compile
.
mvn clean compile
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.