# 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 evaulated. 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

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.
`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 Details

### 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.