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?


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


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.

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.


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 '**/*'
}

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


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


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.


0
gradle build -x test --parallel

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


0

Bitte versuchen Sie dies:

gradlew -DskipTests=true build


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.