Interface IncrementalTaskInputs


@Incubating @NonExtensible public interface IncrementalTaskInputs
Provides access to any input files that need to be processed by an incremental task.

An incremental task action is one that accepts a single IncrementalTaskInputs parameter. The task can then provide an action to execute for all input files that are out of date with respect to the previous execution of the task, and a separate action for all input files that have been removed since the previous execution.

 class IncrementalReverseTask extends DefaultTask {
      @InputDirectory
      def File inputDir

      @OutputDirectory
      def File outputDir

      @TaskAction
      void execute(IncrementalTaskInputs inputs) {
          if (!inputs.incremental)
              project.delete(outputDir.listFiles())

          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()
              }
          }
      }
  }
 

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 outOfDate(org.gradle.api.Action<? super org.gradle.api.tasks.incremental.InputFileDetails>). Cases where this occurs include:

  • There is no history available from a previous execution.
  • An TaskOutputs.upToDateWhen(groovy.lang.Closure) criteria added to the task returns false.
  • An Input property has changed since the previous execution.
  • One or more output files have changed since the previous execution.
Note that this is a stateful API:
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Indicates if it was possible for Gradle to determine which exactly input files were out of date compared to a previous execution.
    void
    outOfDate(Action<? super InputFileDetails> outOfDateAction)
    Executes the action for all of the input files that are out-of-date since the previous task execution.
    void
    removed(Action<? super InputFileDetails> removedAction)
    Executes the action for all of the input files that were removed since the previous task execution.