Package org.gradle.api.execution

## Interface TaskExecutionGraph

-     public interface TaskExecutionGraph

  A `TaskExecutionGraph` is responsible for managing the execution of the `Task` instances which are part of the build. The `TaskExecutionGraph` maintains an execution plan of tasks to be executed (or which have been executed), and you can query this plan from your build file.

  You can access the `TaskExecutionGraph` by calling `Gradle.getTaskGraph()`. In your build file you can use `gradle.taskGraph` to access it.

  The `TaskExecutionGraph` is populated only after all the projects in the build have been evaluated. It is empty before then. You can receive a notification when the graph is populated, using `whenReady(groovy.lang.Closure)` or `addTaskExecutionGraphListener(TaskExecutionGraphListener)`.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addTaskExecutionGraphListener​(TaskExecutionGraphListener listener)` | Adds a listener to this graph, to be notified when this graph is ready.
    `void` | `addTaskExecutionListener​(TaskExecutionListener listener)` | Adds a listener to this graph, to be notified as tasks are executed.
    `void` | `afterTask​(Closure closure)` | Adds a closure to be called immediately after a task has executed.
    `void` | `afterTask​(Action<Task> action)` | Adds an action to be called immediately after a task has executed.
    `void` | `beforeTask​(Closure closure)` | Adds a closure to be called immediately before a task is executed.
    `void` | `beforeTask​(Action<Task> action)` | Adds an action to be called immediately before a task is executed.
    `List<Task>` | `getAllTasks()` | Returns the tasks which are included in the execution plan.
    `Set<Task>` | `getDependencies​(Task task)` | Returns the dependencies of a task which are part of the execution graph.
    `boolean` | `hasTask​(String path)` | Determines whether the given task is included in the execution plan.
    `boolean` | `hasTask​(Task task)` | Determines whether the given task is included in the execution plan.
    `void` | `removeTaskExecutionGraphListener​(TaskExecutionGraphListener listener)` | Remove a listener from this graph.
    `void` | `removeTaskExecutionListener​(TaskExecutionListener listener)` | Remove a listener from this graph.
    `void` | `whenReady​(Closure closure)` | Adds a closure to be called when this graph has been populated.
    `void` | `whenReady​(Action<TaskExecutionGraph> action)` | Adds an action to be called when this graph has been populated.

- - ### Method Detail

    - #### addTaskExecutionGraphListener

          void addTaskExecutionGraphListener​(TaskExecutionGraphListener listener)

      Adds a listener to this graph, to be notified when this graph is ready.

      Parameters:
        `listener` - The listener to add. Does nothing if this listener has already been added.

    - #### removeTaskExecutionGraphListener

          void removeTaskExecutionGraphListener​(TaskExecutionGraphListener listener)

      Remove a listener from this graph.

      Parameters:
        `listener` - The listener to remove. Does nothing if this listener was never added to this graph.

    - #### addTaskExecutionListener

          void addTaskExecutionListener​(TaskExecutionListener listener)

      Adds a listener to this graph, to be notified as tasks are executed.

      Parameters:
        `listener` - The listener to add. Does nothing if this listener has already been added.

    - #### removeTaskExecutionListener

          void removeTaskExecutionListener​(TaskExecutionListener listener)

      Remove a listener from this graph.

      Parameters:
        `listener` - The listener to remove. Does nothing if this listener was never added to this graph.

    - #### whenReady

          void whenReady​(Closure closure)

      Adds a closure to be called when this graph has been populated. This graph is passed to the closure as a parameter.

      Parameters:
        `closure` - The closure to execute when this graph has been populated.

    - #### whenReady

          void whenReady​(Action<TaskExecutionGraph> action)

      Adds an action to be called when this graph has been populated. This graph is passed to the action as a parameter.

      Parameters:
        `action` - The action to execute when this graph has been populated.
      Since:
        3.1

    - #### beforeTask

          void beforeTask​(Closure closure)

      Adds a closure to be called immediately before a task is executed. The task is passed to the closure as a parameter.

      Parameters:
        `closure` - The closure to execute when a task is about to be executed.

    - #### beforeTask

          void beforeTask​(Action<Task> action)

      Adds an action to be called immediately before a task is executed. The task is passed to the action as a parameter.

      Parameters:
        `action` - The action to execute when a task is about to be executed.
      Since:
        3.1

    - #### afterTask

          void afterTask​(Closure closure)

      Adds a closure to be called immediately after a task has executed. The task is passed to the closure as the first parameter. A `TaskState` is passed as the second parameter. Both parameters are optional.

      Parameters:
        `closure` - The closure to execute when a task has been executed

    - #### afterTask

          void afterTask​(Action<Task> action)

      Adds an action to be called immediately after a task has executed. The task is passed to the action as the first parameter.

      Parameters:
        `action` - The action to execute when a task has been executed
      Since:
        3.1

    - #### hasTask

          boolean hasTask​(String path)

      Determines whether the given task is included in the execution plan.

      Parameters:
        `path` - the absolute path of the task.
      Returns:
        true if a task with the given path is included in the execution plan.
      Throws:
        `IllegalStateException` - When this graph has not been populated.

    - #### hasTask

          boolean hasTask​(Task task)

      Determines whether the given task is included in the execution plan.

      Parameters:
        `task` - the task
      Returns:
        true if the given task is included in the execution plan.
      Throws:
        `IllegalStateException` - When this graph has not been populated.

    - #### getAllTasks

          List<Task> getAllTasks()

      Returns the tasks which are included in the execution plan. The tasks are returned in the order that they will be executed.

      Returns:
        The tasks. Returns an empty set if no tasks are to be executed.
      Throws:
        `IllegalStateException` - When this graph has not been populated.

    - #### getDependencies

          Set<Task> getDependencies​(Task task)

      Returns the dependencies of a task which are part of the execution graph.

      Returns:
        The tasks. Returns an empty set if there are no dependent tasks.
      Throws:
        `IllegalStateException` - When this graph has not been populated or the task is not part of it.
      Since:
        4.6