Je ne comprends pas pourquoi nous n'avons pas besoin d'ajouter des citations au nom de la tâche des grades lorsque nous le déclarons
Comme: J'ai essayé dans un projet groovy et j'ai constaté qu'il est illégal, comment la gradle le fait fonctionner.
Et je ne comprends pas l'expression ci-dessus ni, pourquoi nous pouvons ajouter (type: Defaulttask) code>, comment pouvons-nous l'analyser avec Groovy Grammar? P> P>
3 Réponses :
Un script de construction de grades est une application DSL groovy. En utilisant attentivement les méthodes "MethodMissing" et "PropertyMISSING", toute la magie est possible. P>
Je ne me souviens pas du mécanisme exact autour de "tâche". Je pense que cela a été demandé dans le forum des grades (probablement plus d'une fois). P>
Mécanisme commenté ici: Stackoverflow.com/questions/12326264
À titre d'exemple dans une formulaire runnable grooVyconsole, vous pouvez définir un peu de code ainsi: donc lorsque le script en bas est exécuté, il imprime Mais la réponse de David est la bonne, ceci est juste par exemple p> Hello TIM < / Code> à STDOUT P>
Voici le code qui rend la magie possible et légale.
// DSL class - Gradle Task class Task { def name; } // DSL class - Gradle Project class Project { List<Task> tasks = []; def methodMissing(String name, def args) { if(name == "task"){ Task t = new Task(name:args[0]) tasks << t } } def propertyMissing(String name) { name } } // gradle build script def buildScript = { task myTask println tasks[0].name } buildScript.delegate = new Project() // calling the script will print out "myTask" buildScript()
Dupliqué possible de Comprendre la syntaxe groovy dans une définition de tâche de grade a>