局部变量的名称查找

Name lookup of the local variable

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

正确,Gradle 在配置闭包中使用委托优先解析策略。在这种情况下,委托是 DependencyHandler 的一个实例。您可以通过查看 Gradle DSL documentation.

查看任何给定的块委托

编辑: 为了确认你的最后一点,是的,构建脚本本身委托给了 Project.

的一个实例