最近在udemy上学习gradle,本文主要介绍gradle的task,如果本文对您有帮助,请不要吝啬您的点赞,谢谢~
新建一个task
初始化工程
新建一个工程 firstproject,cd进入,
输入 gradle init
会出现让你选择一种工程类型,然后输入 1, 表示创建一个basic的gradle工程,然后选择 1 表示 用Groovy作为DSL,然后输入工程名称,最后创建成功
查看tasks
运行gradle tasks
新建一个task
编辑 build.gradle
,新建一个task名为 firstTask
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.1.1/samples
*/
println('start')
task (firstTask) {
println 'Gradle Rocks!!'
doFirst() {
println 'doFirst!'
}
doLast() {
println 'doLast!'
}
}
println('end')
再次运行 gradle tasks --all
,可以看见多了一些东西:task运行的内容,以及 other tasks多了一个我们定义的 firstTask
继续运行 gradle firstTask
或者 gradle fT
(firstTask 的缩写)
可以看见firstTask里面的两个方法被执行了
探究task的执行时期
task的执行时期
再次编辑 build.gradle
, 新建另一个task deployToStage
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.1.1/samples
*/
println('start')
task (firstTask) {
def abc = 123
println abc
println 'Gradle Rocks!!'
doFirst() {
println 'doFirst!'
}
doLast() {
println 'doLast!'
}
}
task deployToStage {
println "Deployed to stage"
}
println('end')
继续运行 gradle deployToStage
或者 gradle dTS
(deployToStage 的缩写),得到
可以发现再Configure 阶段就开始执行里面的内容
task依赖
再次编辑 build.gradle
, 新建另一个task deployToProd
,并设置deployToProd依赖于deployToStage
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.1.1/samples
*/
println('start')
task (firstTask) {
def abc = 123
println abc
println 'Gradle Rocks!!'
doFirst() {
println 'doFirst!'
}
doLast() {
println 'doLast!'
}
}
task deployToStage {
doLast(){
println "Deployed to stage"
}
}
task deployToProd {
doLast(){
println "Deployed to prod"
}
}
deployToProd.dependsOn deployToStage
println('end')
继续运行 gradle deployToProd
或者 gradle dTP
(deployToProd 的缩写),得到
发现deployToStage执行了,随后执行deployToProd,但是firstTask没有执行
finalizedBy
再次编辑 build.gradle
, 新建另一个task cleanupFiles
,并设置cleanupFiles在完成deployToProd之后执行
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.1.1/samples
*/
println('start')
task (firstTask) {
def abc = 123
println abc
println 'Gradle Rocks!!'
doFirst() {
println 'doFirst!'
}
doLast() {
println 'doLast!'
}
}
task deployToStage {
doLast(){
println "Deployed to stage"
}
}
task deployToProd {
doLast(){
println "Deployed to prod"
}
}
task cleanupFiles {
doLast() {
println "Cleaned Up Files"
}
}
deployToProd.dependsOn deployToStage
deployToProd.finalizedBy cleanupFiles
println('end')
继续运行 gradle deployToProd
或者 gradle dTP
(deployToProd 的缩写),得到
发现首先执行 deployToStage, 然后执行 deployToProd, 然后执行 cleanupFiles
默认执行的task
再次编辑 build.gradle
, 添加默认执行的语句:defaultTasks "deployToStage"
/*
* This file was generated by the Gradle 'init' task.
*
* This is a general purpose Gradle build.
* Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.1.1/samples
*/
println('start')
task (firstTask) {
def abc = 123
println abc
println 'Gradle Rocks!!'
doFirst() {
println 'doFirst!'
}
doLast() {
println 'doLast!'
}
}
task deployToStage {
doLast(){
println "Deployed to stage"
}
}
task deployToProd {
doLast(){
println "Deployed to prod"
}
}
task cleanupFiles {
doLast() {
println "Cleaned Up Files"
}
}
deployToProd.dependsOn deployToStage
deployToProd.finalizedBy cleanupFiles
defaultTasks "deployToStage"
println('end')
输入gradle
命令:发现虽然没有指定执行的任务,但是deployToStage被执行了