practices - git rename tag
Gradle: pasando la variable de una tarea a otra (2)
Creo que las propiedades globales deben evitarse y gradle le ofrece una buena manera de hacerlo agregando propiedades a una tarea:
task task1 {
doLast {
task1.ext.variable = "some value"
}
}
task task2 {
dependsOn task1
doLast {
println(task1.variable)
}
}
Quiero pasar una variable de una tarea a otra, en el mismo archivo build.gradle. Mi tarea de primer grado extrae el último mensaje de confirmación y necesito que este mensaje pase a otra tarea. El código está abajo. Gracias por la ayuda de antemano.
task gitMsg(type:Exec){
commandLine ''git'', ''log'', ''-1'', ''--oneline''
standardOutput = new ByteArrayOutputStream()
doLast {
String output = standardOutput.toString()
}
}
Quiero pasar la variable ''salida'' a la tarea a continuación.
task notifyTaskUpcoming << {
def to = System.getProperty("to")
def subj = System.getProperty(''subj'')
def body = "Hello... "
sendmail(to, subj, body)
}
Quiero incorporar el mensaje git en "cuerpo".
Puede definir una variable de output
fuera del método doLast
, pero en la raíz del script y luego usarla en otras tareas. Solo por ejemplo:
//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
Aquí hay 2 tareas definidas. Task2
depende de Task1
, lo que significa que el segundo se ejecutará solo después del primero. La variable
de tipo String se declara en la raíz del script de construcción y se inicializa en el método task1
doLast
(nota, <<
es igual a doLast
). Luego la variable se inicializa, podría ser utilizada por cualquier otra tarea.