如何获取自上次运行Gradle任务以来已更改的文件?

时间:2015-04-22 17:51:50

标签: java groovy gradle

我有以下gradle任务:

class MyTranslateTask extends DefaultTask {

    @InputFiles FileCollection srcFiles
    @OutputDirectory File destDir

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

如何从srcFiles获取自上次执行此任务以来发生更改的所有文件?

1 个答案:

答案 0 :(得分:2)

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()
             }
         }
     }
 }