Gradle任务执行
先执行配置阶段的语句,即每个Task闭包中doFirst和doLast之外的语句 再执行执行阶段的语句,即每个Task闭包中doFirst和doLast之内的语句 在build.gradle(:app)的Project级别文件下创建MyProjectTask
task MyProjectTask {
println "MyProjectTask"
doFirst {
println '<--------Task myProjectTask start-------->'
}
doLast {
println '<--------Task myProjectTask end-------->'
}
}
在build.gradle(:app)的App级别文件下创建MyAppTaskA,MyAppTaskB
task MyAppTaskA {
println "Execute MyAppTaskA"
doFirst {
println '<--------Task MyAppTaskA start-------->'
}
doLast {
println '<--------Task MyAppTaskA end-------->'
}
}
task MyAppTaskB {
println "Execute MyAppTaskB"
doFirst {
println '<--------Task MyAppTaskB start-------->'
}
doLast {
println '<--------Task MyAppTaskB end-------->'
}
}
在build.gradle(:mylibrary)的Module级别文件下创建MyLibraryTaskA
task MyLibraryTaskA {
println "Execute MyLibraryTaskA"
doFirst {
println '<--------Task MyLibraryTaskA start-------->'
}
doLast {
println '<--------Task MyLibraryTaskA end-------->'
}
}
Android Studio Terminal 执行./gradlew MyProjectTask
所有App级别和Module级别的Task任务的配置阶段都会执行 最后执行MyProjectTask的执行阶段
PS E: \gradleProject> . /gradlew MyProjectTask
> Configure project :
MyProjectTask
> Configure project : app
Execute MyAppTaskA
Execute MyAppTaskB
> Configure project : mylibrary
Execute MyLibraryTaskA
> Task : MyProjectTask
< -- -- -- -- Task myProjectTask start-- -- -- -- >
< -- -- -- -- Task myProjectTask end-- -- -- -- >
BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed
Android Studio Terminal 执行./gradlew MyAppTaskA
所有App级别和Module级别的Task任务的配置阶段都会执行 最后执行MyAppTaskA的执行阶段
PS E: \gradleProject> . /gradlew MyAppTaskA
> Configure project :
MyProjectTask
> Configure project : app
Execute MyAppTaskA
Execute MyAppTaskB
> Configure project : mylibrary
Execute MyLibraryTaskA
> Task : app: MyAppTaskA
< -- -- -- -- Task MyAppTaskA start-- -- -- -- >
< -- -- -- -- Task MyAppTaskA end-- -- -- -- >
BUILD SUCCESSFUL in 994ms
1 actionable task: 1 executed
Gradle任务依赖
参数依赖
task MyAppTaskB ( dependsOn: [ 'MyAppTaskA' ] ) {
println "Execute MyAppTaskB"
doFirst {
println '<--------Task MyAppTaskB start-------->'
}
doLast {
println '<--------Task MyAppTaskB end-------->'
}
}
Android Studio Terminal 执行./gradlew MyAppTaskB
所有App级别和Module级别的Task任务的配置阶段都会执行 MyAppTaskB会在依赖的MyAppTaskA之后执行
PS E: \gradleProject> . /gradlew MyAppTaskB
> Configure project :
MyProjectTask
> Configure project : app
Execute MyAppTaskA
Execute MyAppTaskB
> Configure project : mylibrary
Execute MyLibraryTaskA
> Task : app: MyAppTaskA
< -- -- -- -- Task MyAppTaskA start-- -- -- -- >
< -- -- -- -- Task MyAppTaskA end-- -- -- -- >
> Task : app: MyAppTaskB
< -- -- -- -- Task MyAppTaskB start-- -- -- -- >
< -- -- -- -- Task MyAppTaskB end-- -- -- -- >
BUILD SUCCESSFUL in 969ms
2 actionable tasks: 2 executed
内部依赖
task MyAppTaskB {
dependsOn = [ MyAppTaskA]
println "Execute MyAppTaskB"
doFirst {
println '<--------Task MyAppTaskB start-------->'
}
doLast {
println '<--------Task MyAppTaskB end-------->'
}
}
Android Studio Terminal 执行./gradlew MyAppTaskB
所有App级别和Module级别的Task任务的配置阶段都会执行 MyAppTaskB会在依赖的MyAppTaskA之后执行
PS E: \gradleProject> . /gradlew MyAppTaskB
> Configure project :
MyProjectTask
> Configure project : app
Execute MyAppTaskA
Execute MyAppTaskB
> Configure project : mylibrary
Execute MyLibraryTaskA
> Task : app: MyAppTaskA
< -- -- -- -- Task MyAppTaskA start-- -- -- -- >
< -- -- -- -- Task MyAppTaskA end-- -- -- -- >
> Task : app: MyAppTaskB
< -- -- -- -- Task MyAppTaskB start-- -- -- -- >
< -- -- -- -- Task MyAppTaskB end-- -- -- -- >
BUILD SUCCESSFUL in 951ms
2 actionable tasks: 2 executed
外部依赖
task MyLibraryTaskA {
dependsOn ( ":app:MyAppTaskA" )
println "Execute MyLibraryTaskA"
doFirst {
println '<--------Task MyLibraryTaskA start-------->'
}
doLast {
println '<--------Task MyLibraryTaskA end-------->'
}
}
Android Studio Terminal 执行./gradlew MyLibraryTaskA
所有App级别和Module级别的Task任务的配置阶段都会执行 Module级别的MyLibraryTaskA会在依赖的App级别的MyAppTaskA之后执行
PS E: \gradleProject> . /gradlew MyLibraryTaskA
> Configure project :
MyProjectTask
> Configure project : app
Execute MyAppTaskA
Execute MyAppTaskB
> Configure project : mylibrary
Execute MyLibraryTaskA
> Task : app: MyAppTaskA
< -- -- -- -- Task MyAppTaskA start-- -- -- -- >
< -- -- -- -- Task MyAppTaskA end-- -- -- -- >
> Task : mylibrary: MyLibraryTaskA
< -- -- -- -- Task MyLibraryTaskA start-- -- -- -- >
< -- -- -- -- Task MyLibraryTaskA end-- -- -- -- >
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed