gradle 入门篇之 task


最近在udemy上学习gradle,本文主要介绍gradle的task,如果本文对您有帮助,请不要吝啬您的点赞,谢谢~

新建一个task

初始化工程

新建一个工程 firstproject,cd进入,
输入 gradle init 会出现让你选择一种工程类型,然后输入 1, 表示创建一个basic的gradle工程,然后选择 1 表示 用Groovy作为DSL,然后输入工程名称,最后创建成功
gradle init

查看tasks

运行gradle 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 tasks --all
继续运行 gradle firstTask 或者 gradle fT (firstTask 的缩写)
gradle task执行
可以看见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 的缩写),得到
gradle task执行时期
可以发现再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 的缩写),得到
gradle task依赖
发现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 的缩写),得到
gradle finalizedBy task关键字
发现首先执行 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被执行了
defaultTasks gradle

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值