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

标签 java groovy gradle

我有以下 gradle 任务:

class MyTranslateTask extends DefaultTask {

    @InputFiles FileCollection srcFiles
    @OutputDirectory File destDir

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

如何从我的 srcFiles 中获取自上次运行此任务以来已更改的所有文件?

最佳答案

Gradle 1.6 引入了一项名为 IncrementalTask​​sInputs 的孵化功能,允许您访问自上次任务运行以来更改或删除的文件。

引用: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()
             }
         }
     }
 }

关于java - 如何获取自上次运行 Gradle 任务以来已更改的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29805346/

相关文章:

java - 当您的应用程序在 Google Play 上时,如何检查是否正在调用方法

java - 在字符串替换方法中使用 CharSequence 作为参数的原因

java - ProcessBuilder 找不到指定的文件,而 Process 可以

有条件地 append 到字符串的 Groovy 方法

sqlite - 尝试访问本地数据库时,使用gradle获取java.lang.ClassNotFoundException:org.hsqldb.JDBCDriver

gradle - Gradle:path或baseDir都可以为null或空字符串

java - 正则表达式中的可选前瞻

grails - Groovy - 未分配给任何变量的映射

groovy - 从子项目调用父函数

java - android studio 3.0.1 中的 Gradle 同步字段