【Kotlin】Gradle的增量式更新

现在目录下有三个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标识了
在这里插入图片描述

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

猜你喜欢

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