Wie erstelle ich eine Gradle-Aufgabe, die immer ausgeführt wird?
-
21-12-2019 - |
Frage
Ich übersehe wahrscheinlich etwas ziemlich Wesentliches/Offensichtliches, aber wie kann ich eine Aufgabe erstellen, die immer für jede Aufgabe/jedes Ziel ausgeführt wird?
Ich kann so etwas tun:
task someTask << {
println "I sometimes run"
}
println "I always run"
Viel wünschenswerter wäre es jedoch, den immer laufenden Teil in einer Aufgabe zu haben.
Der nächste Punkt, dem ich gekommen bin, ist:
task someTask << {
println "I sometimes run"
}
println "I always run"
void helloThing() {
println "I always run too. Hello?"
}
helloThing()
Die Verwendung einer Methode ist also eine „ok“-Lösung, aber ich hatte gehofft, dass es eine Möglichkeit gibt, eine Aufgabe gezielt festzulegen/wiederzuverwenden.
Hoffentlich hat jemand eine Möglichkeit, dies zu tun.:) :)
Lösung
Angenommen, das Ziel besteht darin, Systeminformationen zu drucken, könnten Sie die Informationen entweder einfach immer in der Konfigurationsphase drucken (außerhalb einer Aufgabendeklaration) und eine Dummy-Aufgabe haben systemStatus
das bringt nichts (da die Informationen sowieso gedruckt werden).Oder Sie können es als reguläre Aufgabe implementieren und durch Hinzufügen sicherstellen, dass die Aufgabe immer ausgeführt wird ":systemStatus"
als erstes Element von gradle.startParameter.taskNames
(eine Liste von Zeichenfolgen), die simuliert, dass jemand ständig tippt gradle :systemStatus ...
.Oder Sie könnten einen Haken nutzen, z gradle.projectsLoaded { ... }
um die Informationen dort auszudrucken.
Andere Tipps
Dies befestigt in jedem Projekt in jedem Projekt eine Verschlüsse an jeder Aufgabe in jedem Projekt:
generasacodicetagpre. Wenn Sie die Funktion / Schließung benötigen, die nur einmal pro Build aufgerufen werden soll,
Wenn Sie die Funktion / Schließung benötigen, um nur einmal pro Build aufgerufen zu werden,
What's wrong with invoking it straight from the root build.gradle
?
task init << {
println "I always run"
}
tasks.init.execute()