Gradle: Variable von einer Aufgabe zur anderen übergeben
Lesezeit: 2 Minuten
Kristallinität
Ich möchte eine Variable in derselben build.gradle-Datei von einer Aufgabe an eine andere übergeben. Meine erste Gradle-Aufgabe zieht die letzte Commit-Nachricht, und ich muss diese Nachricht an eine andere Aufgabe übergeben. Der Code ist unten. Danke für Hilfe im Voraus.
Ich möchte die Git-Nachricht in ‘body’ integrieren.
Ich denke, globale Eigenschaften sollten vermieden werden, und Gradle bietet Ihnen eine gute Möglichkeit, dies zu tun, indem Sie Eigenschaften zu einer Aufgabe hinzufügen:
Schön, eine andere Methode zu kennen – danke! Warum sollten globale Eigenschaften vermieden werden?
– Kristallinität
24. November 2015 um 16:21 Uhr
weil es einfach zu leicht ist, den Kontext zu verlieren, warum eine globale Eigenschaft verwendet wurde. Indem die Variable direkt an die Aufgabe gebunden ist, die sie erzeugt, ist sie meiner Meinung nach näher am allgemeinen OO-Design und leichter zu verfolgen. (nur meine 2 Cent hier)
– Rene Groeschke
24. November 2015 um 16:29 Uhr
Aha. Cool – nochmals vielen Dank für deine Zeit und deinen Input =)
– Kristallinität
24. November 2015 um 16:59 Uhr
funktioniert nicht mit gradle 4.4. Versucht aber fehlgeschlagen. irgendwelche hinweise?
– Chaosguru
12. Februar 2018 um 14:50 Uhr
@chaosguru Warum schlägt es fehl? Übrigens, rein task1 man kann sich nur darauf beziehen ext Anstatt von task1.ext
– Bart van Heukelom
23. Februar 2018 um 16:01 Uhr
Sie können ein definieren output Variable außerhalb der doLast -Methode, aber im Skriptstamm und verwenden Sie sie dann einfach in anderen Aufgaben. Nur zum Beispiel:
//the variable is defined within script root
def String variable
task task1 << {
//but initialized only in the task's method
variable = "some value"
}
task task2 << {
//you can assign a variable to the local one
def body = variable
println(body)
//or simply use the variable itself
println(variable)
}
task2.dependsOn task1
Hier sind 2 Aufgaben definiert. Task2 kommt drauf an Task1, das heißt, der zweite läuft erst nach dem ersten. Das variable vom Typ String wird im Stammverzeichnis des Build-Skripts deklariert und in initialisiert task1doLast Methode (beachten Sie, << ist gleich doLast). Dann wird die Variable initialisiert, sie könnte von jeder anderen Task verwendet werden.
Vielen Dank! Ich hätte das unbedingt ausprobieren sollen … sehr geschätzt! =)
– Kristallinität
24. November 2015 um 16:11 Uhr
Danke für dieses tolle Beispiel. Hut ab, Bruder!
– Martin Pfeffer
27. August 2017 um 1:17 Uhr
Wenn Sie surfen, sehen Sie sich das Beispiel unten an, das besser ist.
– Ben Liyanage
27. September 2018 um 15:47 Uhr
12156800cookie-checkGradle: Variable von einer Aufgabe zur anderen übergebenyes