1.4_任务配置

2017-12-25  本文已影响3人  Android_Dev

现在我们对groovy有了一些了解,接下来我们将会从一个更好理解的角度去分析gradle脚本到底是怎么回事.

像一个闭包可以有一个代理对象一样,整个gradle build 脚本,代表着一个project对象,gradle 构建脚本中所有的关键字都是project对象中对应的属性或方法.

例如:project对象有一个用来声明任务的方法叫 task,它接受一个新task的名称和一个设置的闭包

    project.task("myTask1")

由于整个 build的脚本代表project对象,因此project可以省略,为下面的形式

    task("myTask2")

还由于groovy语法优秀,可以省略括号,所以还可简化为

    task "myTask3"

还可以省去双引号,最终结果,我们可以声明一个 task

    task myTask4

myTask4.description = "This is what's shown in the task list"

myTask4.group = "This is the heading for this task in the task list,"

myTask4.doLast {println "Do this last"}

myTask4.doFirst {println "Do this first"}

// 除了声明一task之后再给其属性赋值,我们可以给task赋一个配置的闭包的值

task myTask6 {

    description "Here's a task with a configuration block"

    group "Some group"

    doLast {

        println "Here's the action"

    }

}

理解这个配置的闭包,有两个重要的部分:

1.闭包被赋值,它的代表着task对象,意味着是当你赋真给group时,实际上是赋值给了task.group

2.task对象的属性拥有同样名称的setter方法,这就是为什么我们赋值给属性,而省去同样的赋值,实际上是我们调用settter方法,省略了括号

结果是,我们必须当给属性赋值时我们用"="赋值,或着省去"()"括号,如下所示

task myTask7 {

    description("Description") // Function call works

    //description "Description" // This is identical to the line above

    group = "Some group" // Assignment also works

    doLast { // We can also omit the parentheses, because Groovy syntax

    println "Here's the action"

    }

}

另一个很重要的语法是:有一些task属性,你可以通过如下方式设置

当然不是全部属性可可这样赋值,具体你可以查看官方文档https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/

task myTask8(description: "Another description") {

    doLast {

        println "Doing something"

    }

}

上一篇 下一篇

猜你喜欢

热点阅读