0
点赞
收藏
分享

微信扫一扫

【Kotlin】Gradle的增量式更新

现在目录下有三个java文件,我们要写一个task来保存所有文件名和路径
【Kotlin】Gradle的增量式更新_gradle
build.gradle.kts

plugins{
java
}

//把所有源代码的文件名称记录下来
task("getSrcName",{
doFirst{
var srcdir = fileTree("src")
var infotxt = file("info.txt")
infotxt.writeText("")
srcdir.forEach{
if(it.isFile){
infotxt.appendText(it.absolutePath)
infotxt.appendText("\r\n")
}
}
}
})

运行getSrcName任务
【Kotlin】Gradle的增量式更新_gradle_02
完成后,src目录下会增加一个info.txt
【Kotlin】Gradle的增量式更新_增量式更新_03
【Kotlin】Gradle的增量式更新_增量式更新_04

【Kotlin】Gradle的增量式更新_增量式更新_05
内置任务(如JavaCompile)声明了输入集合(Java源文件)和输出集合(class文件)。Gradle使用此信息来确定任务是否是最新的并且是否需要执行任何工作。如果没有任何输入或输出发生更改,Gradle可以跳过该任务。总之,我们将这种行为成为Gradle增量构建

我们来测试下,修改刚才的任务

//把所有源代码的文件名称记录下来
task("getSrcName",{
//指定了任务的输入
inputs.dir("src")
//指定了任务的输出
outputs.file("info.txt")
doFirst{
......
}
})

【Kotlin】Gradle的增量式更新_java文件_06
当我们执行过一次编译任务之后,再次运行该task,如果发现它的输入没有任何改动,那么它编译后的结果肯定也是不变的,可以直接从缓存里获取输出,这样Gradle会标识该task为UP-TO-DATE,从而跳过该task的执行

现在修改Hello.java,已经没有了UP-TO-DATE标识了
【Kotlin】Gradle的增量式更新_增量式更新_07


举报

相关推荐

0 条评论