某个 task 内部执行顺序
version = '0.1-SNAPSHOT'
task printVersion {
group "test"
doFirst {
println "Before reading the project version"
}
doLast {
println "Version: $version"
}
}
/**先添加的doFirst动作后执行,先添加的doLast动作先执行*/
printVersion.doFirst { println "Second action" }
printVersion.doFirst { println "First action" }
printVersion.doLast { println "Not Last action" }
printVersion.doLast { println "Last action" }
//打印结果:
//Executing tasks: [printVersion]
//> Task :app:printVersion
//First action
//Second action
//Before reading the project version
//Version: 0.1-SNAPSHOT
//Not Last action
//Last action
可见 : 在task为 printVersion的执行中doFirst、doLast可调整执行顺序
gradle 变量的定义和引用:
gradle.properties:
key3=value3
key4=4
build.gradle :
//build.gradle脚本中可以直接使用上述定义的两个变量:
/**直接引用gradle.properties文件中定义的属性 $key3 */
project.ext.key1 ='value1'
ext {
key2 =2
}
task printGradleProperty {
group "testTask"
doLast {
println "value1 : $key1"
println "value2 : $key2"
println "value3 : $key3"
println "value4 : $key4"
}
}
//> Task :printGradleProperty
//value1 : value1
//value2 : 2
//value3 : value3
//value4 : 4
task执行顺序:多个dependsOn
task task2{
println "task2"
}
task task3{
println "task3"
}
task task4{
println "task4"
}
task task1(dependsOn:[task2,task3,task4]){
println "task1"
doFirst{
println "task1 first"
}
doLast{
println "task1 last"
}
}
//Executing tasks: [task1]
//
//
//> Configure project :app
//task2
//task3
//task4
//task1
//
//> Task :app:task2 UP-TO-DATE
//> Task :app:task3 UP-TO-DATE
//> Task :app:task4 UP-TO-DATE
//
//> Task :app:task1
//task1 first
//task1 last
task执行顺序 : dependsOn方式
task task11 {
group 'test'
println "task11"
}
//方式1: 通过()传入
tasks.create(name: 'task22', dependsOn: task11) {
group 'test'
description 'task22'
println "task22"
doLast {
println "task22 doLast"
}
}
//方式2: 在{}中设定
tasks.create("task33") {
group 'test'
description 'task33'
dependsOn task22
println "task33"
enabled false
doLast {
println "task33 doLast"
}
}
//方式3: 在{}外设定
task task44() {
group 'test'
description 'task44'
println "task44"
doFirst {
println "task44 doFirst"
}
doLast {
println "task44 doLast"
}
}
task44.dependsOn task33
task44.onlyIf {
task33.enabled
}
//enable : 设为true
//Executing tasks: [task44]
//
//
//> Configure project :app
//task11
//task22
//task33
//task44
//
//> Task :app:task11 UP-TO-DATE
//
//> Task :app:task22
//task22 doLast
//
//> Task :app:task33
//task33 doLast
//
//> Task :app:task44
//task44 doFirst
//task44 doLast
//enable : 设为false
//Executing tasks: [task44]
//
//
//> Configure project :app
//task11
//task22
//task33
//task44
//
//> Task :app:task11 UP-TO-DATE
//
//> Task :app:task22
//task22 doLast
//
//> Task :app:task33 SKIPPED
//> Task :app:task44 SKIPPED