如何获取自 Gradle 任务的最后一个 运行 以来更改的文件?

How to get the Files that have changed since the last run of a Gradle Task?

我有以下 gradle 任务:

class MyTranslateTask extends DefaultTask {

    @InputFiles FileCollection srcFiles
    @OutputDirectory File destDir

    @TaskAction
    def run() {
    ...
    }
} 

如何从我的 srcFiles 中获取自上次 运行 此任务以来发生变化的所有文件?

Gradle 1.6 引入了一个名为 IncrementalTasksInputs 的孵化功能,允许您访问自上次任务 运行.

以来更改或删除的文件

参考:https://gradle.org/docs/current/dsl/org.gradle.api.tasks.incremental.IncrementalTaskInputs.html

class IncrementalReverseTask extends DefaultTask {
     @InputDirectory
     def File inputDir

     @OutputDirectory
     def File outputDir

     @TaskAction
     void execute(IncrementalTaskInputs inputs) {
         inputs.outOfDate { change ->
             def targetFile = project.file("$outputDir/${change.file.name}")
             targetFile.text = change.file.text.reverse()
         }

         inputs.removed { change ->
             def targetFile = project.file("$outputDir/${change.file.name}")
             if (targetFile.exists()) {
                 targetFile.delete()
             }
         }
     }
 }