Maven - Tests überspringen
Am häufigsten verwendeter Befehl:
$ mvn package -Dmaven.test.skip=true
1. Übersicht
In diesem Artikel wird gezeigt, wie man Unit-Tests übersprigen kann, wenn ein Projekt mit Maven erstellt wird.
Der einfachste Weg, Unit-Tests mit Maven zu überspringen, ist es den folgenden Befehl zu verwenden.
$ mvn clean install -Dmaven.test.skip=true
# or
$ mvn install -Dmaven.test.skip=true
oder
$ mvn clean package -Dmaven.test.skip=true
# or
$ mvn package -Dmaven.test.skip=true
Beispiel für den Befehl von maven clean:
# Vor der Installation oder Ausführung, soll man clean ausführen, um das Zielverzeichnis zu löschen
$ mvn clean
Manchmal wollen wir unser Projekt erstellen, ohne alle Komponententests erneut auszuführen.
Oder einige der Komnponententests schlagen fehl, und wir wollen jar sowieso bauen.
Es gibt mehrere Wege, um das zu erreichen.
Maven -D Parameter bedeutet - eine Systemeigenschaft mit dem Befehl mvn -help definieren.
2. Unit-Tests mit -Dmaven.test.skip=true überspringen
Man kann Maven-Befehle mit definierten Systemeigenschaften ausführen:
-Dmaven.test.skip=true
Unten befinden sich die Beispiele mit mvn install und mvn package.
2.1 mvn install
$ mvn install -Dmaven.test.skip=true
# Unser Build wird ohne Unit-Tests ausgeführt
2.2 mvn package
$ mvn package -Dmaven.test.skip=true
# Unser Build wird ohne Unit-Tests ausgeführt
HINWEIS: maven.test.skip wird von folgenden Plug-Ins anerkannt:
- Maven Surefire Plugin
- Maven Failsafe Plugin
- Maven Compiler Plugin
3. Unit-Tests dauerhaft in pom.xml deaktivieren
Das soll zu pom.xml hinzugefügt werden.
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
Wenn diese Eigenschaft in pom.xml definiert wurde, kann man es ausführen
$ mvn install
# Unser Build wird ohne Unit-Tests ausgeführt
oder
$ mvn package
# Unser Build wird ohne Unit-Tests ausgeführt
Maven akzeptiert Eigenschaften aus pom.xml und überspringt laufende Unit-Tests.
4. Bei der Verwendung von Maven Surefire Plugin
Diese xml Eigenschaft zu Maven Surefire Plugin Konfiguration in pom.xml hinzufügen:
<configuration>
<skipTests>true</skipTests>
</configuration>
Vollständiges pom.xml Beispiel, wo diese Konfiguration hinzugefügt werden muss, um Unit-Tests zu überspringen.
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<!-- HERE it goes -->
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>
5. Maven -D Parameter Bedeutung - Erklärung
Was bedutet eigentlich Maven -D Parameter?
Es bedeutet - Systemeigenschaft definieren.
-D, --define <arg>
Um die Eigenschaft zu definieren, muss man -D verwenden.
Das Synonym für den '-D' Parameter ist '--define' ("definieren")
Beispiele:
$ mvn install -DskipTests=true
$ mvn install -DfailIfNoTests=false
Bei der mvn -help Ausführung, erhält man eine Beschreibung aller Flags.
$ mvn -help
..
..
-D, --define <arg> Define a system property
..
..
6. mvn Unterschied zwischen clean install vs clean package
mvn clean
- entfernt unser Zielverzeichnis
mvn install
- ertellt jar + legt es in das Zielverzeichnis und kopiert es in das maven .m2 repository auf dem PC, Beispiel für den lokalen Maven-Repository-Pfad:
C:\Users\seth\.m2\repository\com\dirask\0.0.1-SNAPSHOT\dirarsk-examples-0.0.1-SNAPSHOT.jar
mvn package
- erstellt jar + setzt es in das Zielverzeichnis, nichts mehr und nichts weniger
Aus der Maven-Dokumentation:
install
- das Paket in lokalen Repository installieren, um es als Abhängigkeit in anderen Projekten lokal zu verwendenpackage
- den kompilierten Code nehmen und in einem verteilbaren Format, z.B JAR verpacken.
7. Maven clean - warum führt man das aus?
Es ist empfehlenswert, der Befehl maven clean auszuführen, bevor den Befehl mvn install oder mvn package ausgeführt wird. Maven clean entfernt unser Zielverzeichnis und stellt aus diese Art und Weise sicher, dass unser Code und unsere Ressourcen frisch in das Zielverzeichnis kompiliert werden.
Zusammengeführte Fragen
- Maven - wie überspringt man unit tests
- Wie kann ich tests mit Maven überspringen?
- mvn unit tests überspringen
- mvn clean install test überspringen
- mvn package test überspringen