【Kotlin】Gradle中的任务

编写一个Task

Project和Task

  • Gradle本身的领域对象主要有Project和Task。
  • Project为Task提供了执行的容器和上下文。

新建项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样把gradle改为我们自己的版本
在这里插入图片描述
同上一节一样的,把build.gradle改为build.gradle.kts,这样我们就可以用kotlin语法写东西了

如下图所示,编写一个名为“helloworld”的任务,内容是打印一句话
点击gradle面板中的刷新按钮,会出现other-helloworld任务
在这里插入图片描述
双击执行它
在这里插入图片描述
或者打开Terminal执行gradle helloworld
在这里插入图片描述

任务的依赖

在这里插入图片描述
把大象放进冰箱总共分三步

  1. 把冰箱门打开
  2. 把大象放进去
  3. 关上冰箱门

这三个步骤存在依赖关系,如果不把冰箱门打开,大象是放不进去的。我们在build.gradle.kts中编写这样的任务

task("opendoor",{

})
task("putelephant",{

}).dependsOn("opendoor")
task("closedoor",{

}).dependsOn("putelephant")

可以看到putelephant这个任务依赖于opendoorclosedoor依赖于putelephant

点击刷新,other中出现了这三个任务
在这里插入图片描述
如果运行opendoor,就只运行了opendoor
在这里插入图片描述
如果运行putelephant,会先执行 opendoor,再执行putelephant
在这里插入图片描述
以此类推,运行closedoor,结果如下
在这里插入图片描述

Task的生命周期

Task 的生命周期:

  • 扫描
  • 执行

我们把上面的任务调整一下顺序,同时添加一些内容

task("closedoor",{
    println("close door")
}).dependsOn("putelephant")
task("putelephant",{
    println("put elephant")
}).dependsOn("opendoor")
task("opendoor",{
    println("open door")
})

运行closedoor
在这里插入图片描述
任务执行顺序是对的,但是打印的顺序好像不太对?

任何gradle脚本构建的时候,会对脚本进行扫描,然后会把闭包中的声明逻辑执行一下,刚才的打印就是声明逻辑,所以刚才的输出是不正确的

如果想把刚才的println代码改为运行时代码,改为

task("closedoor",{
    doFirst{
        println("close door")
    }
}).dependsOn("putelephant")

task("putelephant",{
    doFirst{
        println("put elephant")
    }
}).dependsOn("opendoor")

task("opendoor",{
    doFirst{
        println("open door")
    }
})

运行结果
在这里插入图片描述

doFirst{}当某一个任务开始做的时候才执行

task("xx",{
	var xx = "xx"//扫描时执行
    doFirst{}//运行时执行
    doLast{}//运行时执行
})

Tasks任务集

Tasks任务集

  • 多个人物的合集就是任务集

Gradle的默认任务

即使build.gradle.kts什么都不写,gradle也是有任务的,截图中展示的就是Gradle的默认任务
在这里插入图片描述
另一种查看方式是在terminal输入gradle tasks
在这里插入图片描述

Gradle属性

task("println",{
    project.properties.forEach{
        k,v ->
        println("$k:$v")
    }
})

在这里插入图片描述

Gradle默认任务

之前我们执行gradle任务是gradle 任务名
现在设置一个默认任务

task("println",{
    project.properties.forEach{
        k,v ->
        println("$k:$v")
    }
})
defaultTasks("println")

当我们输入gradle时就会默认执行prinln这个任务了
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值