现在目录下有三个java文件,我们要写一个task来保存所有文件名和路径
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任务
完成后,src目录下会增加一个info.txt
内置任务(如JavaCompile)声明了输入集合(Java源文件)和输出集合(class文件)。Gradle使用此信息来确定任务是否是最新的并且是否需要执行任何工作。如果没有任何输入或输出发生更改,Gradle可以跳过该任务。总之,我们将这种行为成为Gradle增量构建
我们来测试下,修改刚才的任务
//把所有源代码的文件名称记录下来
task("getSrcName",{
//指定了任务的输入
inputs.dir("src")
//指定了任务的输出
outputs.file("info.txt")
doFirst{
......
}
})
当我们执行过一次编译任务之后,再次运行该task,如果发现它的输入没有任何改动,那么它编译后的结果肯定也是不变的,可以直接从缓存里获取输出,这样Gradle会标识该task为UP-TO-DATE,从而跳过该task的执行
现在修改Hello.java,已经没有了UP-TO-DATE标识了