2012-11-21 2 views
18

In einer Gradle-Build-Datei gibt es mehrere Möglichkeiten, die für eine bestimmte Aufgabe ausgeführten Elemente anzugeben. Die doFirst-Methode platziert ein Aufgabenelement oben auf dem Aufgabenstapel, sodass das Element vor dem Rest des Aufgabenstapels ausgeführt wird. Dies ist sehr praktisch, wenn Sie vor der Hauptaufgabe einige vorbereitende Aufgaben erledigen müssen. Wenn Sie DoFirst mehrmals aufrufen, wird das Element, das im letzten Aufruf hinzugefügt wurde, als erstes ausgeführt.Gradle doast-Philosophie

In der Theorie sollte DoLast etwas ähnliches tun, aber doLast sollte aufgerufen werden, nachdem die Hauptausführung der Aufgabe abgeschlossen ist. Wenn Sie in d 1.2 jedoch doLast aufrufen und dann nach doLast in der Datei gra- dle.build etwas zur Hauptaufgabe hinzufügen, ist das Hauptaufgabenelement das zuletzt aufgerufene Element. Zum Beispiel kann die folgende gradle Build-Datei:

task myTask 

myTask << { 
    println "myTask main execution block" 
} 

myTask.doFirst { 
println "myTask doFirst call one" 
} 

myTask.doFirst { 
    println "myTask doFirst call two" 
} 

myTask.doLast { 
    println "myTask doLast" 
} 

myTask << { 
    println "myTask more main execution block" 
} 

erzeugt die folgende Ausgabe:

:myTask 
myTask doFirst call two 
myTask doFirst call one 
myTask main execution block 
myTask doLast 
myTask more main execution block 

BUILD SUCCESSFUL 

Total time: 1.585 secs 

Meine Frage lautet: Ist es die Absicht von doLast einfach Schritten auf das Ende der Aufgabe hängen (Wie geht das Erste an den Anfang)? Wenn dem so ist, scheint doLast sinnlos zu sein, mit Ausnahme der Bereitstellung von Symmetrie mit doFirst. Ein Benutzer kann einfach myTask < < {...} tun, um etwas an das Ende anzuhängen. Ich hätte gedacht, dass doLast sicherstellen würde, dass alle "doLast" -Elemente nach dem Hauptausführungsblock ausgeführt würden.

Ist das einfach die Art und Weise, in der Gradle's doLast funktionieren soll, oder ist das ein Fehler? (Oder bin ich einfach dumm, etwas nach dem Aufruf von doLast an den Hauptausführungsblock anzuhängen - was ein einfacher Fehler war, nachdem ich in einem anderen Ausführungsblock gelandet war).

Antwort

30

<< ist ein Alias ​​für doLast, also funktioniert hier alles wie erwartet.

Verwandte Themen