Gibt es eine Möglichkeit, eine Gradle-Aufgabe erneut auszuführen oder alle Aufgaben auf den Status "NICHT AKTUELL" zurückzusetzen ?
106
Versuchen Sie, Ihren Build so auszuführen, -C rebuild
dass Gradles Cache neu erstellt wird.
Verwenden Sie in neueren Versionen von Gradle --rerun-tasks
Wenn immer nur eine einzelne Aufgabe ausgeführt werden soll, können Sie die outputs
Eigenschaft innerhalb der Aufgabe festlegen .
outputs.upToDateWhen { false }
Bitte beachten Sie, dass Gradle die Aufgabe möglicherweise überspringt, wenn für Ihre Aufgabe keine Dateieingaben definiert sind, auch wenn der obige Code verwendet wird. Beispielsweise muss in einer Zip- oder Kopieraufgabe mindestens eine Datei in der Konfigurationsphase der Aufgabendefinition bereitgestellt werden .
tasks.whenTaskAdded { theTask -> if (theTask.name.startsWith("dex")) { theTask.outputs.upToDateWhen { false } theTask.doLast { task ->... }}}
Sie können verwenden
cleanTaskname
Nehmen wir an, Sie haben
Und Sie möchten erzwingen, dass sometask2 erneut ausgeführt wird
bevor Sie die Aufgabe ausführen, die alles ausführt.
Anscheinend versteht jede Aufgabe, die UP-TO-DATE versteht, auch, wie man sich selbst reinigt.
quelle
Ich hatte einen schwierigen Fall, in dem das Setzen
outputs.upToDateWhen { false }
innerhalb der Aufgabe oder das Hinzufügen des Flags--rerun-tasks
nicht geholfen hat, da die Aufgabe jedes Mal, wenn ich sie ausführtesetOnlyIf
, auf gesetzt wurdefalse
.Fügen Sie Folgendes hinzu, um
build.gradle
die Ausführung von zu erzwingenmyTask
:quelle