Maven - Wie kompiliere ich Tests, ohne sie auszuführen?

128

Gibt es in Maven eine Möglichkeit, die Tests zu kompilieren, ohne sie auszuführen? Ich möchte die IDE verwenden, um bestimmte Tests auszuführen, und nicht alle.

user373201
quelle
8
Sie sollten wahrscheinlich entweder die Frage bearbeiten oder die akzeptierte Antwort ändern.
Chiranjib

Antworten:

29

Sie können versuchen, Parameter zu verwenden -DskipTests

Verweise:

Bewohner
quelle
In Netbeans habe ich das gemacht. Ich sehe die folgenden mvn -Dmaven.test.skip = true -Dnetbeans.execution = true sauber installieren, dann sehe ich die folgenden
user373201
[compiler: testCompile] Testquellen werden nicht kompiliert. [todsicher: test] Tests werden übersprungen. Zumindest mit Netbeans sieht es so aus, als würden beim Überspringen von Tests keine
Testquellen
1
Egal, obwohl die Protokolle dies sagen, scheint es immer noch Testdateien zu kompilieren.
user373201
34
Dies führt dazu, dass Tests vollständig übersprungen werden: Ausführung sowie Kompilierung, siehe die richtige Antwort unten: Testkompilierung. Ich benutze es mit mvn clean compile test-compile in Eclipse
Yashima
3
@ Yashima Sie haben Recht, diese Antwort ist nicht so klug ... bitte akzeptieren Sie die Antwort unten, so kann ein diese löschen
lweller
334

Wie wäre es mit der test-compileLebenszyklusphase? Das Überspringen von Tests ist nicht erforderlich, da es vor der testPhase erfolgt. Dh

$ mvn test-compile

Und fertig.

Die Einführung in den Build-Lebenszyklus wird weiter erläutert.

RonU
quelle
7
Das war genau das, was ich brauchte, danke. Ich weiß nichts über den ursprünglichen Fragesteller. Ich wollte jedoch die Tests kompilieren und sie dann mit einem separaten Testläufer ausführen.
Mike Miller
30

Um nur die Tests und den Code zu kompilieren, ohne sie auszuführen, gehen Sie einfach wie folgt vor:

mvn test-compile
orange77
quelle
7
Ich denke, Test-Compile beinhaltet Compile
Whimusical
stimme @Whimusical zu. Außerdem wird das Kompilierungsziel zweimal ausgeführt.
Gabriel Petrovay
26

Wenn Sie ein Ziel ausführen, das die Testphase umfasst (z. B. ein Paket), können Sie zwei Dinge tun:

  • Verwenden Sie den Befehl mvn -DskipTests=true package. Dadurch werden alle Tests kompiliert, aber nicht ausgeführt.
  • Oder mvn -Dmaven.test.skip=true package. Dadurch wird der Testzweig nicht kompiliert oder ausgeführt.
Martins
quelle
3

Alternativ können Sie die maven.test.skip.execOption verwenden.

mvn -Dmaven.test.skip.exec=true

Maven kompiliert die Tests, ohne sie auszuführen. Ich benutze diese Option regelmäßig in allen meinen Projekten.

Stephan
quelle
1

Wenn Sie wirklich nur die Tests kompilieren möchten (überspringen Sie alle anderen Phasen wie compile), reicht dies aus

mvn org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile

Siehe die Plugin-Bindungen des Standardlebenszyklus .

Schnatterer
quelle
0

Wenn Sie die Datei settings.xml verwenden, können Sie diese auch verwenden

<maven.test.skip>true</maven.test.skip>
Menapole
quelle
5
Das solltest du niemals tun. Wenn Sie es brauchen, stellen Sie es in der Befehlszeile ein, aber niemals dauerhaft.
Sean Patrick Floyd
13
Ich habe nie gesagt, dass du es tun sollst oder nicht. Nur Wissen über die Option.
Menapole
4
Dies führt dazu, dass maven die Tests auch nicht kompiliert.
Mike Miller
3
@ Sean Patrick Floyd: Warum nicht? Dies ist NICHT permanent, das heißt, es in der pom.xml zu setzen.
Balázs Németh