interface InputChanges(source)

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 {
    abstract DirectoryProperty getInputDir()

    abstract DirectoryProperty getOutputDir()

    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) {
            } 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 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.




Link copied to clipboard
Changes for a parameter.
Link copied to clipboard
abstract fun isIncremental(): Boolean
Indicates if it was possible for Gradle to determine which input files were out of date compared to a previous execution.