W pliku kompilacji gradle istnieje wiele sposobów określania elementów wykonanych dla określonego zadania. metoda doFirst umieszcza element zadania na szczycie stosu zadań, dzięki czemu element jest wykonywany przed resztą stosu zadań. Jest to bardzo przydatne, jeśli musisz wykonać pewne czynności przygotowawcze przed głównym zadaniem. W rzeczywistości, jeśli wywołasz doFirst kilka razy, element dodany w ostatnim wywołaniu jest pierwszą rzeczą wykonaną.gradle doLast philosophy
Teoretycznie doLast powinien robić coś podobnego, ale powinno się wywoływać ostatnie polecenie PO zakończeniu głównej realizacji zadania. Ale w gradle 1.2, jeśli wywołasz doLast, a następnie dodasz coś do głównego zadania po doLast w pliku gradle.build, głównym elementem zadania jest ostatni element o nazwie. Na przykład, następujący Gradle plik build:
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"
}
Produkuje następujący wynik:
: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
Moje pytanie brzmi: czy jest to intencję doLast po prostu dołączania kroki na końcu zadania (jak na przykład pierwsze falsyfikaty na początek)? Jeśli tak, to doLast wydaje się bezcelowe, z wyjątkiem zapewnienia symetrii za pomocą polecenia doFirst. Użytkownik może po prostu zrobić myTask < < {...}, aby dopisać coś na końcu. Pomyślałbym, że do niedawna upewni się, że wszelkie elementy "doLast" zostaną wykonane po głównym bloku wykonawczym.
Czy to jest po prostu sposób, w jaki powinno działać granie gradle, czy jest to błąd? (lub jestem po prostu głupi za dołączenie czegoś do głównego bloku wykonawczego po wywołaniu doLast - co było prostym błędem po zahaczeniu w innym bloku wykonawczym).