名称查找局部变量

时间:2015-01-10 08:12:38

标签: groovy gradle

我对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对象上执行。这是对的吗?

1 个答案:

答案 0 :(得分:1)

正确,Gradle在配置闭包中使用委托优先解析策略。在这种情况下,委托是DependencyHandler的实例。您可以通过查看Gradle DSL documentation来查看给定块所代表的内容。

编辑:要确认您的最后一点,是的,构建脚本本身会委托给Project的实例。