# TaskBasedOperation

[View Source](https://cs.android.com/search?q=file:com/android/build/api/artifact/TaskBasedOperation.kt+class:com.android.build.api.artifact.TaskBasedOperation) Added in 4.2.0


```
interface TaskBasedOperation<TaskT : Task>
```

<br />

*** ** * ** ***

Interface with methods to wire input and output method references to `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html`-based operations.

A `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html`-based operation will create, transform, or append files or directories to public `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` to customize or participate in the build flow.

Each operation should indicate through the methods of this interface which method can be used to set or retrieve the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` inputs and outputs.

## Summary

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/OutOperationRequest<FileTypeT>` | `<FileTypeT : https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocation.html> https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1)( taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocationProperty.html<FileTypeT> )` Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` output method reference so the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` result can be retrieved after successful task execution. |
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/CombiningOperationRequest<FileTypeT>` | `<FileTypeT : https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocation.html> https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1,kotlin.Function1)( taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.html<FileTypeT>, taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocationProperty.html<FileTypeT> )` Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input and output methods references so the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` can retrieve the current versions of a `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1,kotlin.Function1)` while producing a new version of the same artifact type accessible through the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1,kotlin.Function1)` method after successful execution. |
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/InAndOutDirectoryOperationRequest<TaskT>` | `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithDirectories(kotlin.Function1,kotlin.Function1)( taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/DirectoryProperty.html, taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/DirectoryProperty.html )` Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input and output methods references so the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` can retrieve the current version of the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithDirectories(kotlin.Function1,kotlin.Function1)`. |
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/InAndOutFileOperationRequest` | `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithFiles(kotlin.Function1,kotlin.Function1)( taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFileProperty.html, taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFileProperty.html )` Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input and output methods references so the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` can retrieve the current version of the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithFiles(kotlin.Function1,kotlin.Function1)`. |
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/MultipleArtifactTypeOutOperationRequest<FileTypeT>` | `<FileTypeT : https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocation.html> https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithMultiple(kotlin.Function1)( taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.html<FileTypeT> )` Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input method reference so the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` can be retrieve the current version of the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/MultipleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithMultiple(kotlin.Function1)`. |

## Public functions

### wiredWith

Added in 4.2.0

```
fun <FileTypeT : FileSystemLocation> wiredWith(
    taskOutput: (TaskT) -> FileSystemLocationProperty<FileTypeT>
): OutOperationRequest<FileTypeT>
```

Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` output method reference so the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` result can be retrieved after successful task execution.

This method is useful when creating a new version, when appending to existing artifacts, or when access to the current version of an artifact isn't required.

| Parameters |
|---|---|
| `taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocationProperty.html<FileTypeT>` | The method reference to retrieve the task output after successful task execution. |

| Returns |
|---|---|
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/OutOperationRequest<FileTypeT>` | The `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/OutOperationRequest` to set the desired operation type and `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` on which the operation applies. |

### wiredWith

Added in 4.2.0

```
fun <FileTypeT : FileSystemLocation> wiredWith(
    taskInput: (TaskT) -> ListProperty<FileTypeT>,
    taskOutput: (TaskT) -> FileSystemLocationProperty<FileTypeT>
): CombiningOperationRequest<FileTypeT>
```

Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input and output methods references so the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` can retrieve the current versions of a `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1,kotlin.Function1)` while producing a new version of the same artifact type accessible through the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWith(kotlin.Function1,kotlin.Function1)` method after successful execution.

This method is useful when `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` is combining all elements of an `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` into a single element.

| Parameters |
|---|---|
| `taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.html<FileTypeT>` | The method reference the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` will use to retrieve the current artifact versions during `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` execution (and only then). |
| `taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/FileSystemLocationProperty.html<FileTypeT>` | The method reference to retrieve the task output after successful task execution. |

| Returns |
|---|---|
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/CombiningOperationRequest<FileTypeT>` | The `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/CombiningOperationRequest` to set the desired operation type and `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` as well as the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact`. |

### wiredWithDirectories

```
fun wiredWithDirectories(
    taskInput: (TaskT) -> DirectoryProperty,
    taskOutput: (TaskT) -> DirectoryProperty
): InAndOutDirectoryOperationRequest<TaskT>
```

Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input and output methods references so the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` can retrieve the current version of the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithDirectories(kotlin.Function1,kotlin.Function1)`. `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` will also produce a new version of the same artifact type accessible through the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithDirectories(kotlin.Function1,kotlin.Function1)` method after successful execution.

This method is useful when `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` is transforming an `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` from its current version to a new one and the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact`'s `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/Artifact#kind()` is `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/Artifact#DIRECTORY()`

| Parameters |
|---|---|
| `taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/DirectoryProperty.html` | The method reference the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` will use to retrieve the current artifact version during `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` execution (and only then). |
| `taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/DirectoryProperty.html` | The method reference to retrieve the task output after successful task execution. |

| Returns |
|---|---|
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/InAndOutDirectoryOperationRequest<TaskT>` | The `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/InAndOutDirectoryOperationRequest` to set the desired operation type as well as the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact`. |

### wiredWithFiles

```
fun wiredWithFiles(
    taskInput: (TaskT) -> RegularFileProperty,
    taskOutput: (TaskT) -> RegularFileProperty
): InAndOutFileOperationRequest
```

Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input and output methods references so the `https://docs.gradle.org/current/javadoc/org/gradle/api/Task.html` can retrieve the current version of the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithFiles(kotlin.Function1,kotlin.Function1)`. `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` will also produce a new version of the same artifact type accessible through the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithFiles(kotlin.Function1,kotlin.Function1)` method after successful execution.

This method is useful when `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` is transforming an `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` from its current version to a new one and the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact`'s `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/Artifact#kind()` is `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/Artifact#FILE()`

| Parameters |
|---|---|
| `taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFileProperty.html` | The method reference the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` will use to retrieve the current artifact version during `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` execution (and only then). |
| `taskOutput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/file/RegularFileProperty.html` | The method reference to retrieve the task output after successful task execution. |

| Returns |
|---|---|
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/InAndOutFileOperationRequest` | The `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/OutOperationRequest` to set the desired operation type and `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact` as well as the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/SingleArtifact`. |

### wiredWithMultiple

Added in 8.3.1

```
fun <FileTypeT : FileSystemLocation> wiredWithMultiple(
    taskInput: (TaskT) -> ListProperty<FileTypeT>
): MultipleArtifactTypeOutOperationRequest<FileTypeT>
```

Sets the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` input method reference so the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` can be retrieve the current version of the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/MultipleArtifact` when invoking `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation#wiredWithMultiple(kotlin.Function1)`.

| Parameters |
|---|---|
| `taskInput: (TaskT) -> https://docs.gradle.org/current/javadoc/org/gradle/api/provider/ListProperty.html<FileTypeT>` | The method reference the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` will use to retrieve the current artifact version during `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/TaskBasedOperation` execution (and only then). |

| Returns |
|---|---|
| `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/MultipleArtifactTypeOutOperationRequest<FileTypeT>` | the `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/MultipleArtifactTypeOutOperationRequest` to set the desired operation type and the target `https://developer.android.com/reference/tools/gradle-api/9.6/com/android/build/api/artifact/MultipleArtifact` |