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 -DskipTestsnur die Testausführung übersprungen : Die Tests werden noch kompiliert.
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.
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.
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.
Führen Sie beispielsweise eine Phase aus , die nicht enthalten test-compileist 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.