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.