【Kotlin】Gradle中的任务

news/2024/5/20 5:26:06 标签: gradle, task

文章目录

  • 编写一个Task
  • 任务的依赖
  • Task的生命周期
  • Tasks任务集
  • Gradle的默认任务
  • Gradle属性
  • 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这个任务了
在这里插入图片描述


http://www.niftyadmin.cn/n/1817175.html

相关文章

【Kotlin】Gradle的增量式更新

现在目录下有三个java文件,我们要写一个task来保存所有文件名和路径 build.gradle.kts plugins{java }//把所有源代码的文件名称记录下来 task("getSrcName",{doFirst{var srcdir fileTree("src")var infotxt file("info.txt")in…

剑指offer 40. 最小的k个数字

剑指 Offer 40. 最小的k个数 - 力扣&#xff08;LeetCode&#xff09; (leetcode-cn.com) 目录 利用堆 代码 运行结果 利用快速排序 代码 运行结果 利用堆 代码 #define top 0 #define NOP 0 class Solution {int k; public:vector<int> getLeastNumbers(vector…

【Kotlin】Gradle依赖管理

文章目录普通程序员高级程序员测试时依赖gradle依赖冲突的解决普通程序员 commons-httpclient-3.0-src.zip下载 用Eclipse新建一个kotlin项目&#xff0c;同时新建一个libs文件夹&#xff0c;把jar包放入 然后右键jar包-Build Path-Add to Build Path 官网tutorial 按照官方…

剑指offer II. 数据流的第K大数值

剑指 Offer II 059. 数据流的第 K 大数值 - 力扣&#xff08;LeetCode&#xff09; (leetcode-cn.com) 运行结果 代码 #define MIN 0x80000000 class KthLargest {int* minHeap;int K; public:KthLargest(int k, vector<int>& nums) {K k;minHeap new int[k 1];…

你说的H5到底是什么,跟Html有什么关系,能吃吗

总跟我说H5、H5的&#xff0c;我特么根本不知道你在说什么好吗…如果你身边有人整天说着 h5&#xff0c;就可以问问他&#xff0c;究竟什么是 h5&#xff0c;然后甩给他以下答案 HTML5 我们摘抄W3school中的段落 什么是HTML5 HTML5是下一代的 HTML&#xff0c;HTML5 将成为 …

原生开发、H5开发与混合开发的区别

文章目录前言三种方式分别的优缺点原生开发Web APP (HTML5&#xff09;开发混合&#xff08;原生H5&#xff09;开发三种方式对比前言 移动应用开发的方式&#xff0c;目前主要有三种&#xff1a; Native App&#xff1a; 本地应用程序&#xff08;原生App&#xff09; Web Ap…

混合开发

Hybrid App主要以JSNative两者相互调用为主&#xff0c;从开发层面实现“一次开发&#xff0c;多处运行”的机制&#xff0c;成为真正适合跨平台的开发。Hybrid App兼具了Native App良好用户体验的优势&#xff0c;也兼具了Web App使用HTML5跨平台开发低成本的优势 目前已经有…

【Kotlin】Gradle自定义扩展

文章目录gradle调用内部扩展deletecopygradle调用外部扩展gradle调用java最后gradle调用内部扩展 官方文档 delete 找到任务类型Task types&#xff0c;找到delete 页面中有groovy语法的示例代码&#xff0c;这里展示kotlin语法 假设main文件夹下有temp目录&#xff0c;里…