run - filosofía de gradle doLast
in gradle, a disabled task is labelled as (1)
<<
es un alias para doLast
, por lo que todo funciona como se espera aquí.
En un archivo de compilación de Gradle, hay varias formas de especificar los elementos ejecutados para una tarea en particular. El método doFirst coloca un elemento de tarea en la parte superior de la pila de tareas, de modo que el elemento se ejecute antes que el resto de la pila de tareas. Esto es muy útil si necesita hacer algunos elementos de preparación antes de la tarea principal. De hecho, si llama a doFirst varias veces, lo primero que se ejecuta es el elemento agregado en la última llamada.
En teoría, doLast debería estar haciendo algo similar, pero doLast debería llamarse DESPUÉS de que se complete la ejecución principal de la tarea. Pero, en gradle 1.2, si llama a doLast y luego agrega algo a la tarea principal después de doLast en el archivo gradle.build, el elemento de tarea principal es el último elemento llamado. Por ejemplo, el siguiente archivo de compilación de Gradle:
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"
}
Produce la siguiente salida:
: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
Mi pregunta es la siguiente: ¿es la intención de doLast simplemente agregar pasos al final de la tarea (como las primeras tachuelas al principio)? Si es así, doLast parece inútil con la excepción de proporcionar simetría con doFirst. Un usuario puede simplemente hacer myTask << {...} para agregar algo al final. Pensé que doLast se aseguraría de que cualquier elemento "doLast" se hiciera después del bloque de ejecución principal.
¿Es esto simplemente la forma en que se supone que funciona el doLast de Gradle, o es esto un error? (o simplemente soy estúpido por agregar algo al bloque de ejecución principal después de llamar a doLast, lo cual fue un simple error después de agregar otro bloque de ejecución).