# register

abstract fun register(name: String, configurationAction: Action<in Task>): TaskProvider<Task>

Defines a new task, which will be created and configured when it is required. A task is 'required' when the task is located using query methods such as getByName, when the task is added to the task graph for execution or when get is called on the return value of this method.

It is generally more efficient to use this method instead of create or create, as those methods will eagerly create and configure the task, regardless of whether that task is required for the current build or not. This method, on the other hand, will defer creation and configuration until required.

#### Return

A Provider whose value will be the task, when queried.

#### Since

4.9

#### Parameters

name

The name of the task.

configurationAction

The action to run to configure the task. This action runs when the task is required.

#### Throws

InvalidUserDataException

If a task with the given name already exists in this project.

abstract fun <T : Task?> register(name: String, type: Class<T>, configurationAction: Action<in T>): TaskProvider<T>

Defines a new task, which will be created and configured when it is required. A task is 'required' when the task is located using query methods such as getByName, when the task is added to the task graph for execution or when get is called on the return value of this method.

It is generally more efficient to use this method instead of create or create, as those methods will eagerly create and configure the task, regardless of whether that task is required for the current build or not. This method, on the other hand, will defer creation and configuration until required.

#### Return

A Provider whose value will be the task, when queried.

#### Since

4.9

#### Parameters

name

The name of the task.

type

The task type.

configurationAction

The action to run to configure the task. This action runs when the task is required.

<T>

The task type

#### Throws

InvalidUserDataException

If a task with the given name already exists in this project.

abstract fun <T : Task?> register(name: String, type: Class<T>): TaskProvider<T>

Defines a new task, which will be created when it is required. A task is 'required' when the task is located using query methods such as getByName, when the task is added to the task graph for execution or when get is called on the return value of this method.

It is generally more efficient to use this method instead of create or create, as those methods will eagerly create and configure the task, regardless of whether that task is required for the current build or not. This method, on the other hand, will defer creation until required.

#### Return

A Provider whose value will be the task, when queried.

#### Since

4.9

#### Parameters

name

The name of the task.

type

The task type.

<T>

The task type

#### Throws

InvalidUserDataException

If a task with the given name already exists in this project.

abstract fun <T : Task?> register(name: String, type: Class<T>, constructorArgs: Array<Any>): TaskProvider<T>

Defines a new task, which will be created when it is required passing the given arguments to the `@Inject`-annotated constructor. A task is 'required' when the task is located using query methods such as getByName, when the task is added to the task graph for execution or when get is called on the return value of this method. All values passed to the task constructor must be non-null; otherwise a `NullPointerException` will be thrown

It is generally more efficient to use this method instead of create or create, as those methods will eagerly create and configure the task, regardless of whether that task is required for the current build or not. This method, on the other hand, will defer creation until required.

#### Return

A Provider whose value will be the task, when queried.

#### Since

4.9

#### Parameters

name

The name of the task.

type

The task type.

constructorArgs

The arguments to pass to the task constructor

<T>

The task type

#### Throws

NullPointerException

If any of the values in `constructorArgs` is null.

abstract fun register(name: String): TaskProvider<Task>

Defines a new task, which will be created when it is required. A task is 'required' when the task is located using query methods such as getByName, when the task is added to the task graph for execution or when get is called on the return value of this method.

It is generally more efficient to use this method instead of create, as that method will eagerly create the task, regardless of whether that task is required for the current build or not. This method, on the other hand, will defer creation until required.

#### Return

A Provider whose value will be the task, when queried.

#### Since

4.9

#### Parameters

name

The name of the task.

#### Throws

InvalidUserDataException

If a task with the given name already exists in this project.