2012-11-21 4 views
18

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).

Odpowiedz

30

<< to alias dla doLast, więc wszystko działa zgodnie z oczekiwaniami.

Powiązane problemy