我们如何知道Gradle闭包中有哪些可用方法?例如:
task greeting { dependsOn greeting0 doLast { println("hi") } }
在上述传递给任务greeting的闭包中,Gradle特定的dependsOn和doLast来自哪里?dependsOn和doLast都是Task方法,但是,如果我们看一下Project文档,闭包只是一个简单的Groovy Closure。
greeting
dependsOn
doLast
Task
ktca8awb1#
作为一个例子,这里有一个Groovy DSL脚本,它显示了正在发生的事情(我希望如此)
class Example { def missingMethod(String name, args) { println name } static run(Closure cl) { def project = new Project() cl.delegate = project cl.resolveStrategy = Closure.DELEGATE_FIRST cl.call() } } class Project { def task(taskDefinition) { def task = new Task() taskDefinition[0].delegate = task taskDefinition[0].resolveStrategy = Closure.DELEGATE_FIRST taskDefinition[0].call() } def and(String what) { println "Project $what" } def methodMissing(String name, args) { args } } class Task { def say(String what) { println "Task $what" } } // So now we can "run" a script Example.run { task woo { say "hello" // From task and "world" // From project } }
此打印
Task hello Project world
1条答案
按热度按时间ktca8awb1#
作为一个例子,这里有一个Groovy DSL脚本,它显示了正在发生的事情(我希望如此)
此打印