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>