Gradle 中的Task 的属性的配置方法

297 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

我们都知道了,Task 是gradle 中的最小执行单元。在Task 中,gradle 还为我们提供了一些默认的属性来为我们的开发提供便利,如:description、group、dependsOn、inputs、outputs 等等。

我们可以根据自己的需求,在定义Task 的时候对这些属性进行赋值,如:

task testTask(dependsOn: testTask2){
 description = 'Hello World'
 doLast{
 	// todo
 }
}

另外需要说明的一点就是,我们不必关心Task 的配置代码的放置位置,因为gradle 在执行一个Task之前,会首先配置这个Task的Property,在配置完成之后,才会去执行这个Task的执行代码块。

另外,我们着重讲述一下Task 的dependsOn 属性。dependsOn 看名字就可以知道,它是用来表述依赖关系的。我们就是通过Task的dependsOn 属性来指定Task 之间的依赖关系的。

依赖关系可以在声明Task 的时候指定,也可以在task 声明完成之后再指定,示例代码如下:

// 创建Task 时,通过dependsOn 属性声明Task之间的依赖关系
task testTask(dependsOn: testTask2){
    doLast{
        // todo
    }
}

// 创建Task 完成之后再声明task 之间的依赖关系
testTask2.dependsOn testTask3

通过上述代码,我们不难看出,三个task 之间的依赖关系是testTask 依赖testTask2,testTask2 依赖testTask3。被依赖的Task 会先执行。

最后我们要说明的是,我们可以为一个task添加多个动作(action)。对于我们构建出的脚本,在运行的时候,添加的这些动作会按顺序执行。这里我们需要注意的是,先添加的doFirst 动作会后执行,而先添加的doLast动作先执行。示例代码如下:

task testTask {
    doFirst {
        println "testTask doFirst"
    }
    doLast {
        println "testTask doLast"
    }
}
testTask.doFirst { println "second added" }
testTask.doFirst { println "first added" }
testTask.doLast { println "last but one added" }
testTask.doLast { println "Last added" }

执行gradle testTask 命令之后,输出的结果为:

first added
second added
testTask doFirst
testTask doLast
last but one added
last added

总结

这篇文章我们讲了Task 的属性的配置方法,着重说明了dependsOn 属性的两种使用方法。另外,在文章最后,我们说明了为task 添加action 的执行顺序的注意事项,希望读者可以有所收获。