【Kotlin】Gradle中的任务

编写一个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("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任务集

在这里插入图片描述

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这个任务了
在这里插入图片描述

发布了640 篇原创文章 · 获赞 143 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/u010356768/article/details/103098474