Interface InputChanges
-
public interface InputChangesProvides 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
InputChangesparameter. 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 useInputChangesto 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() } } } }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
ChangeType.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
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.lang.Iterable<FileChange>getFileChanges(FileCollection parameter)Changes for a parameter.java.lang.Iterable<FileChange>getFileChanges(Provider<? extends FileSystemLocation> parameter)Changes for a parameter.booleanisIncremental()Indicates if it was possible for Gradle to determine which input files were out of date compared to a previous execution.
-
-
-
Method Detail
-
isIncremental
boolean isIncremental()
Indicates if it was possible for Gradle to determine which input files were out of date compared to a previous execution. Incremental inputs are unavailable when history is unavailable (i.e. this piece of work has never been executed before), or if there are changes to non-file input properties, or output files.When
true:getFileChanges(FileCollection)andgetFileChanges(Provider)report changes to the input files compared to the previous execution.
When
false:- Every input file is reported via
getFileChanges(FileCollection)andgetFileChanges(Provider)as if it wasChangeType.ADDED.
-
getFileChanges
java.lang.Iterable<FileChange> getFileChanges(FileCollection parameter)
Changes for a parameter.When
isIncremental()isfalse, then all elements of the parameter are returned asChangeType.ADDED.Only input file properties annotated with @
Incrementalor @SkipWhenEmptycan be queried for changes.Note that for inputs with
PathSensitivity.NONE, instead of aChangeType.MODIFIEDevent, file modifications can be reported as a pair of anChangeType.ADDEDand aChangeType.REMOVEDevent.- Parameters:
parameter- The value of the parameter to query.
-
getFileChanges
java.lang.Iterable<FileChange> getFileChanges(Provider<? extends FileSystemLocation> parameter)
Changes for a parameter.When
isIncremental()isfalse, then all elements of the parameter are returned asChangeType.ADDED.This method allows querying properties of type
RegularFilePropertyandDirectoryPropertyfor changes. These two types are typically used for @InputFileand @InputDirectoryproperties.Only input file properties annotated with @
Incrementalor @SkipWhenEmptycan be queried for changes.Note that for inputs with
PathSensitivity.NONE, instead of aChangeType.MODIFIEDevent, file modifications can be reported as a pair of anChangeType.ADDEDand aChangeType.REMOVEDevent.- Parameters:
parameter- The value of the parameter to query.
-
-