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