我有以下gradle任务:
class MyTranslateTask extends DefaultTask {
@InputFiles FileCollection srcFiles
@OutputDirectory File destDir
@TaskAction
def run() {
...
}
}
如何从srcFiles
获取自上次执行此任务以来发生更改的所有文件?
答案 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()
}
}
}
}