Gradle Build ohne Tests

634

Ich möchte ausführen, gradle buildohne die Komponententests auszuführen . Ich habe es versucht:

$ gradle -Dskip.tests build

Das scheint nichts zu bewirken. Gibt es einen anderen Befehl, den ich verwenden könnte?

Dave
quelle
1
Vielleicht hilft dir das Gradle Buil ohne Tests
Schurkenjunge
Verwenden Sie Java?
Naga
2
-DskipTestsist für Maven
Gayan Weerakutti

Antworten:

1239

Sie sollten das -xBefehlszeilenargument verwenden, das jede Aufgabe ausschließt.

Versuchen:

gradle build -x test 

Aktualisieren:

Der Link in Peters Kommentar hat sich geändert. Hier ist das Diagramm aus dem Gradle-Benutzerhandbuch

c_maker
quelle
45
Dies ist die richtige Antwort. 'gradle assemble' lässt auch viele andere Aufgaben aus. Sehen Sie sich dieses Diagramm an, um sich ein Bild zu machen. Für typische reale Builds lässt "Gradle Assemble" noch mehr Aufgaben aus.
Peter Niederwieser
13
Link von @PeterNiederwieser nicht mehr gültig. Wahrscheinlich bezog er sich auf dieses Diagramm: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.
9
Funktioniert, obwohl Sie möglicherweise z. B. -x integTestusw. hinzufügen müssen , also nicht so praktisch wie Mavens Decke -DskipTests.
Jesse Glick
1
@c_maker, Wie führe ich dies von Eclipse aus durch?
Rinuthomaz
Ist es möglich, die Klassendatei auszuführen? Ich meine, mit runkann ich die Wirkung meines Hello-Programms sehen. Aber ich denke, dass es alles wieder kompiliert. Ich möchte nur das Java-Programm ausführen.
Sigur
107

Versuchen:

gradle assemble

Versuchen Sie Folgendes, um alle verfügbaren Aufgaben für Ihr Projekt aufzulisten:

gradle tasks

AKTUALISIEREN:

Dies scheint zunächst nicht die richtigste Antwort zu sein, aber lesen Sie die gradle tasksAusgabe oder die Dokumente sorgfältig durch .

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
Emil Setz dich
quelle
8
Als zusätzlicher Hinweis für den Fall, dass Sie Ihre Komponententests debuggen: gradle assembleKompilieren Sie die Hauptdateien nicht. Wenn Sie daran arbeiten, Ihren Unit-Test zu reparieren, müssen Sie gradle assemble testClasses- ich denke, dass die Benennung der Build-Task ziemlich verwirrend ist.
Martin
36

Die akzeptierte Antwort ist die richtige.

OTOH, die Art und Weise, wie ich dies zuvor gelöst habe, bestand darin, allen Projekten Folgendes hinzuzufügen:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

Führen Sie den Build mit aus, -Dskip.tests=trueund alle Testaufgaben werden übersprungen.

David Resnick
quelle
3
Für mich ist dies immer noch die einzige funktionierende Option, da der -x-Test nur für das Startprojekt zu funktionieren scheint, nicht jedoch für Abhängigkeiten in einem Multi-Projekt-Build (getestet auf Gradle 2.1). Fügen Sie die Datei test.onlyif ... in einen configure (subprojects.findAll {javaProjects.contains (it.name)}) {} -Block in Ihrem root build.gradle ein und sie funktioniert für alle Projekte.
timm
Gut. Dieser Weg ist Maven-Benutzern vertraut.
AlexR
23

Sie können die folgenden Zeilen hinzufügen build.gradle, um **/*alle Tests auszuschließen.

test {
    exclude '**/*'
}
Guisong He
quelle
2
Dies ist die beste Antwort IMHO
Marco Sulla
1
Vielen Dank! Ihre Antwort war hilfreich.
JAY PATEL
4

Referenz

Verwenden Sie die -xBefehlszeilenoption, um eine Aufgabe von gradle auszuschließen . Siehe das folgende Beispiel

task compile << {
    println 'task compile'
}

task compileTest(dependsOn: compile) << {
    println 'compile test'
}

task runningTest(dependsOn: compileTest) << {
    println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
    println 'running distribution job'
}

Ausgabe von: gradle -q dist -x runningTest

task compile
compile test
running distribution job

Hoffe das würde dir das Grundlegende geben

Suganthan Madhavan Pillai
quelle
Bitte senden Sie einen Screenshot der Seite. Ich weiß nicht, wo ich diese Codezeile setzen soll ...
Hossein Mansouri
Dieser Code sollte in Ihr build.gradle gehen :)
Suganthan Madhavan Pillai
2

Die verschiedenen Möglichkeiten zum Deaktivieren von Testaufgaben im Projekt sind:

tasks.withType(Test) {enabled = false}

Dieses Verhalten ist manchmal erforderlich, wenn Sie Tests in einem Projekt (oder einer Gruppe von Projekten) deaktivieren möchten.

Auf diese Weise können Sie für alle Arten von Testaufgaben arbeiten, nicht nur für Java-Tests. Auch dieser Weg ist sicher. Ich meine Folgendes: Sie haben eine Reihe von Projekten in verschiedenen Sprachen: Wenn wir versuchen, diese Art von Datensatz in main hinzuzufügen build.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

Wir werden in einem Projekt scheitern, wenn wir keine Aufgabe namens Tests haben

Sergey Yakovlev
quelle
2

Wenn Sie -x testdie Testausführung überspringen, wird jedoch auch die Kompilierung des Testcodes ausgeschlossen.

gradle build -x test 

In unserem Fall haben wir einen CI / CD-Prozess, bei dem ein Ziel die Kompilierung und das nächste Ziel das Testen ist (Build -> Test).

Für unser erstes BuildZiel wollten wir also sicherstellen, dass das gesamte Projekt gut kompiliert wird. Dafür haben wir verwendet:

./gradlew build testClasses -x test

Beim nächsten Ziel führen wir einfach Tests durch.

Federico Piazza
quelle
0
gradle build -x test --parallel

Wenn Ihre Maschine mehrere Kerne hat. Es wird jedoch nicht empfohlen, Parallel Clean zu verwenden.

Yan Khonski
quelle
0

Bitte versuchen Sie dies:

gradlew -DskipTests=true build

Sarath Babu Polavarapu
quelle
6
@KirankumarDafda - nein. Sie können jederzeit eine Antwort veröffentlichen, auch wenn eine vorhandene Antwort akzeptiert wurde. Die neue Antwort ist möglicherweise besser als die akzeptierte Antwort oder löst sie auf andere Weise oder hilft anderen auf andere Weise. Aus der Überprüfung .
Wai Ha Lee
@WaiHaLee Ich kann meinen Kommentar nicht bearbeiten, aber als ich Vorschläge für neue Benutzer erhielt, wollte ich erklären, dass versucht wird, Antworten mit mehr Erläuterungen hinzuzufügen, damit andere Benutzer überprüfen können, warum diese Antwort oder dieser Code für sie hilfreich ist.
Kirankumar Dafda
0

Im Java-Plugin :

$ gradle tasks

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.

Verification tasks
------------------
test - Runs the unit tests.

Gradle Build ohne Test Sie haben zwei Möglichkeiten:

$ gradle assemble
$ gradle build -x test

aber wenn Sie Test kompilieren wollen:

$ gradle assemble testClasses
$ gradle testClasses
Arnau Sistach Reinoso
quelle