gradle - gradle 中的 `this` 对象是什么?

标签 gradle groovy this

使用这个build.grade:

task hello{
    doLast{
        println'Hello World!'
    }
}

defaultTasks 'hello'
this.buildDir="binin"
project.buildDir="bout"
ext.abc="test abc"

println "buildDir is: ${this.buildDir}"
println "buildDir is: "+project.buildDir
println "project=${project}, ${project.project}, ${this==project} ${this.equals(project)}"
println "this=${this}, ${this.project}, ${this.project.equals(project)}"
println "this.ext, ${this.ext}, ${this.project.ext}, ${this.ext==this.project.ext}"

输出是:

buildDir is: /mnt/e/code/hbg/source/_posts/scripts/bout
buildDir is: /mnt/e/code/hbg/source/_posts/scripts/bout
project=root project 'demo', root project 'demo', false, false
this=root project 'demo', root project 'demo', true
this.ext, org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@3b77c6e3, org.gradle.api.internal.plugins.DefaultExtraPropertiesExtension@3b77c6e3, true

它显示 this 是一个 Project 实例,但不是当前的 project,但是 this.projectproject > 和 project.project 也是project

那么 this 对象是什么?

当我们编写构建文件时,我们不是在构造一个Project实例吗?为什么 this 不是当前正在构建的实例?

最佳答案

this 指的是脚本本身,它委托(delegate)(几乎)当前项目的所有内容。因此,当您调用此方法时,实际上会调用项目的相应方法。访问属性也是如此。

但是this仍然与项目不一样。

关于gradle - gradle 中的 `this` 对象是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49344141/

相关文章:

android-studio - 序言中不允许包含内容,desktop.ini文件中存在错误

javascript - 这个范围,指的是window

javascript - 如何传递函数作用域(而不是上下文)?

grails - JavaScript评估如何在Groovy或Grails中使用

java - this 作为对象赋值中的引用

android - 如何从 gradle 插件将文件夹添加到 android 项目源集中

android - 如何在 Android studio 中开启 UNIX 模式?

maven - 具有Gradle Maven repo 依赖关系的Moqui组件

eclipse - 找不到gradle同步错误文件

spring - Grails中的垂直响应API