Gradle: Passage de variable à partir d'une tâche à l'autre
Je veux passer une variable à partir d'une tâche à l'autre, dans le même build.gradle fichier. Mon premier gradle tâche tire le dernier message de commit, et j'ai besoin de ce message est passé à une autre tâche. Le code est ci-dessous. Merci pour l'aide à l'avance.
task gitMsg(type:Exec){
commandLine 'git', 'log', '-1', '--oneline'
standardOutput = new ByteArrayOutputStream()
doLast {
String output = standardOutput.toString()
}
}
Je veux passer la variable "sortie" dans la tâche ci-dessous.
task notifyTaskUpcoming << {
def to = System.getProperty("to")
def subj = System.getProperty('subj')
def body = "Hello... "
sendmail(to, subj, body)
}
Je veux intégrer le git de message dans le "corps".
OriginalL'auteur crystallinity | 2015-11-24
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir un
output
variable en dehors de ladoLast
méthode, mais dans le script de la racine et ensuite il suffit de l'utiliser dans un autre tâches. Juste pour exemple:Voici 2 tâches définies.
Task2
dépendTask1
, cela signifie que le deuxième sera exécuté qu'après la première. Levariable
de type Chaîne de caractères est déclarée dans le script de construction de la racine et initialisé danstask1
doLast
méthode (remarque,<<
est égal àdoLast
). Ensuite, la variable est initialisée, il pourrait être utilisé par n'importe quelle autre tâche.Merci pour ce bon exemple. Bravo à toi, frère!
Si vous naviguez, regardez l'exemple ci-dessous, lequel est le meilleur.
OriginalL'auteur Stanislav
Je pense propriétés globales devraient être évités et gradle vous offre une façon agréable de le faire en ajoutant des propriétés d'une tâche:
parce que c'est juste trop facile lâche le contexte, le pourquoi d'une propriété globale a été utilisée. en ayant la variable directement liée à la tâche qui la produit, il est plus proche sur la commune OO design, je pense, et plus facile à suivre. (juste mes 2 cents ici)
Je vois. Cool merci encore pour votre temps et de l'entrée =)
ne fonctionne pas avec gradle 4.4. Essayé, mais échoue. tous les conseils?
Pourquoi est-il un échec? Btw, dans
task1
vous pouvez tout simplement se référer àext
au lieu detask1.ext
OriginalL'auteur Rene Groeschke