我对Groovy中的名称查询有疑问。请考虑以下构建脚本:
apply([plugin: 'java'])
def dependenciesClosure = {
delegate.ext.name = "DelegateName"
println name
println delegate.toString()
project(':api')
}
dependenciesClosure();
dependencies(dependenciesClosure)
gradle check
命令生成输出
webapp
project ':webapp'
DelegateName
org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@397ef2
考虑到这一点,首先对委托对象执行非本地变量名称查找,如果找不到名称,则在全局project
对象上执行。这是对的吗?
答案 0 :(得分:1)
正确,Gradle在配置闭包中使用委托优先解析策略。在这种情况下,委托是DependencyHandler
的实例。您可以通过查看Gradle DSL documentation来查看给定块所代表的内容。
编辑:要确认您的最后一点,是的,构建脚本本身会委托给Project
的实例。