3 个互动演示帮你看清"为啥声明了 input/output 性能就提升 10 倍"。
左边的 Task 没有声明 input/output,每次都全量执行;右边的 Task 声明了,没改就跳过。点几次"构建"按钮,看看差距。
tasks.register("processBad") {
doLast {
files.forEach { /* process */ }
}
}
tasks.register("processGood") {
inputs.dir("src")
outputs.dir("build/processed")
doLast {
files.forEach { /* process */ }
}
}
选一个常用类型,看示例代码 + 适用场景。
自定义 Task 类的属性必须用这些注解标注,Gradle 才能为它做增量构建。
@CacheableTask 类级别注解:标记后输出可以被构建缓存复用@PathSensitive(NONE),避免移动文件就重跑