局部变量的名称查找
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
.
的一个实例
我对 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
.