Package: org.gradle.api.tasks

## [Java] Interface TaskContainer

- org.gradle.api.NamedDomainObjectCollection

- All Superinterfaces:
    PolymorphicDomainObjectContainer, NamedDomainObjectSet, TaskCollection, Iterable, DomainObjectCollection, Collection, NamedDomainObjectCollection

  A `TaskContainer` is responsible for managing a set of Task instances.

  You can obtain a `TaskContainer` instance by calling Project.getTasks, or using the `tasks` property in your build script.

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `Task` | `create(Map<String, ?> options)`
    `Task` | `create(Map<String, ?> options, Closure configureClosure)`
    `Task` | `create(String name, Closure configureClosure)`
    `Task` | `create(String name)`
    `T` | `create(String name, Class<T> type)`
    `T` | `create(String name, Class<T> type, Action<? super T> configuration)`
    `Task` | `findByPath(String path)`
    `Task` | `getByPath(String path)`
    `Task` | `replace(String name)`
    `T` | `replace(String name, Class<T> type)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `interface TaskCollection` | `getAt, getByName, getByName, matching, matching, whenTaskAdded, whenTaskAdded, withType`
    `interface NamedDomainObjectSet` | `findAll, matching, matching, withType`
    `interface NamedDomainObjectCollection` | `add, addAll, addRule, addRule, findByName, getAsMap, getAt, getByName, getByName, getNamer, getNames, getRules, matching, matching, withType`
    `interface Set` | `add, equals, hashCode, clear, contains, isEmpty, size, toArray, toArray, addAll, iterator, remove, containsAll, removeAll, retainAll`

- - ### Method Detail

    - #### public Task create(Map<String, ?> options)

      Creates a Task and adds it to this container. A map of creation options can be passed to this method to control how the task is created. The following options are available:

      Option | Description | Default Value
      --- | --- | ---
      `{ value: org.gradle.api.Task#TASK_NAME}` | The name of the task to create. | None. Must be specified.
      `{@value org.gradle.api.Task#TASK_TYPE}` | The class of the task to create. | DefaultTask
      `{@value org.gradle.api.Task#TASK_ACTION}` | The closure or Action to execute when the task executes. See Task#doFirst(Action)#doFirst(Action). | `null`
      `{@value org.gradle.api.Task#TASK_OVERWRITE}` | Replace an existing task? | `false`
      `{@value org.gradle.api.Task#TASK_DEPENDS_ON}` | The dependencies of the task. See here for more details. | `[]`

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      If a task with the given name already exists in this container and the `{@value org.gradle.api.Task#TASK_OVERWRITE}` option is not set to true, an exception is thrown.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `options` - The task creation options.
      Returns:
        The newly created task object

    - #### public Task create(Map<String, ?> options, Closure configureClosure)

      Creates a Task adds it to this container. A map of creation options can be passed to this method to control how the task is created. See create(java.util.Map) for the list of options available. The given closure is used to configure the task before it is returned by this method.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `options` - The task creation options.
        `configureClosure` - The closure to use to configure the task.
      Returns:
        The newly created task object

    - #### public Task create(String name, Closure configureClosure)

      Creates a Task with the given name adds it to this container. The given closure is used to configure the task before it is returned by this method.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `name` - The name of the task to be created
        `configureClosure` - The closure to use to configure the task.
      Returns:
        The newly created task object

    - #### public Task create(String name)

      Creates a Task with the given name and adds it to this container.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `name` - The name of the task to be created
      Returns:
        The newly created task object

    - #### public T create(String name, Class<T> type)

      Creates a Task with the given name and type, and adds it to this container.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `name` - The name of the task to be created.
        `type` - The type of task to create.
      Returns:
        The newly created task object

    - #### public T create(String name, Class<T> type, Action<? super T> configuration)

      Creates a Task with the given name and type, configures it with the given action, and adds it to this container.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `name` - The name of the task to be created.
        `type` - The type of task to create.
        `configuration` - The action to configure the task with.
      Returns:
        The newly created task object.

    - #### public Task findByPath(String path)

      Locates a task by path. You can supply a task name, a relative path, or an absolute path. Relative paths are interpreted relative to the project for this container. This method returns null if no task with the given path exists.

      Parameters:
        `path` - the path of the task to be returned
      Returns:
        The task. Returns null if so such task exists.

    - #### public Task getByPath(String path)

      Locates a task by path. You can supply a task name, a relative path, or an absolute path. Relative paths are interpreted relative to the project for this container. This method throws an exception if no task with the given path exists.

      throws:
        UnknownTaskException If no task with the given path exists.
      Parameters:
        `path` - the path of the task to be returned
      Returns:
        The task. Never returns null

    - #### public Task replace(String name)

      Creates a Task with the given name and adds it to this container, replacing any existing task with the same name.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `name` - The name of the task to be created
      Returns:
        The newly created task object

    - #### public T replace(String name, Class<T> type)

      Creates a Task with the given name and type, and adds it to this container, replacing any existing task of the same name.

      After the task is added, it is made available as a property of the project, so that you can reference the task by name in your build file. See here for more details.

      throws:
        InvalidUserDataException If a task with the given name already exists in this project.
      Parameters:
        `name` - The name of the task to be created.
        `type` - The type of task to create.
      Returns:
        The newly created task object