Maven - Tests überspringen
Am häufigsten verwendeter Befehl:
xxxxxxxxxx
$ mvn package -Dmaven.test.skip=true
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.
xxxxxxxxxx
$ mvn clean install -Dmaven.test.skip=true
# or
$ mvn install -Dmaven.test.skip=true
oder
xxxxxxxxxx
$ mvn clean package -Dmaven.test.skip=true
# or
$ mvn package -Dmaven.test.skip=true
Beispiel für den Befehl von maven clean:
xxxxxxxxxx
# 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.

Man kann Maven-Befehle mit definierten Systemeigenschaften ausführen:
xxxxxxxxxx
-Dmaven.test.skip=true
Unten befinden sich die Beispiele mit mvn install und mvn package.
xxxxxxxxxx
$ mvn install -Dmaven.test.skip=true
# Unser Build wird ohne Unit-Tests ausgeführt
xxxxxxxxxx
$ 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
Das soll zu pom.xml hinzugefügt werden.
xxxxxxxxxx
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
Wenn diese Eigenschaft in pom.xml definiert wurde, kann man es ausführen
xxxxxxxxxx
$ mvn install
# Unser Build wird ohne Unit-Tests ausgeführt
oder
xxxxxxxxxx
$ mvn package
# Unser Build wird ohne Unit-Tests ausgeführt
Maven akzeptiert Eigenschaften aus pom.xml und überspringt laufende Unit-Tests.
Diese xml Eigenschaft zu Maven Surefire Plugin Konfiguration in pom.xml hinzufügen:
xxxxxxxxxx
<configuration>
<skipTests>true</skipTests>
</configuration>
Vollständiges pom.xml Beispiel, wo diese Konfiguration hinzugefügt werden muss, um Unit-Tests zu überspringen.
xxxxxxxxxx
<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>
Was bedutet eigentlich Maven -D Parameter?
Es bedeutet - Systemeigenschaft definieren.
xxxxxxxxxx
-D, --define <arg>
Um die Eigenschaft zu definieren, muss man -D verwenden.
Das Synonym für den '-D' Parameter ist '--define' ("definieren")
Beispiele:
xxxxxxxxxx
$ mvn install -DskipTests=true
$ mvn install -DfailIfNoTests=false
Bei der mvn -help Ausführung, erhält man eine Beschreibung aller Flags.
xxxxxxxxxx
$ mvn -help
..
..
-D, --define <arg> Define a system property
..
..
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:
xxxxxxxxxx
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.
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.