Input Changes
Provides access to any input files that need to be processed by an incremental work action.
An incremental work action is one that accepts a single InputChanges parameter. The work action can then query what changed for an input parameter since the last execution to only process the changes. The following example shows a task which reverses the text in each of its input files. It demonstrates how to use InputChanges to only process the changed files.
abstract class IncrementalReverseTask extends DefaultTask {
@Incremental
@InputDirectory
abstract DirectoryProperty getInputDir()
@OutputDirectory
abstract DirectoryProperty getOutputDir()
@TaskAction
void execute(InputChanges inputChanges) {
inputChanges.getFileChanges(inputDir).each { change ->
if (change.fileType == FileType.DIRECTORY) return
def targetFile = outputDir.file(change.normalizedPath).get().asFile
if (change.changeType == ChangeType.REMOVED) {
targetFile.delete()
} else {
targetFile.text = change.file.text.reverse()
}
}
}
}
Content copied to clipboard
In the case where Gradle is unable to determine which input files need to be reprocessed, then all of the input files will be reported as ADDED. When such a full rebuild happens, the output files of the work are removed prior to executing the work action. Cases where this occurs include:
- There is no history available from a previous execution.
- A non-file input parameter has changed since the previous execution.
- One or more output files have changed since the previous execution.
Since
5.4