OutOperationRequest
@Incubating interface OutOperationRequest<FileTypeT : FileSystemLocation>
com.android.build.api.artifact.OutOperationRequest |
Operations performed by a Task with a single RegularFile or Directory output.
Task is not consuming existing version of the target ArtifactType.
Summary
Public methods |
|
---|---|
abstract Unit |
toAppendTo(type: ArtifactTypeT) Initiates an append request to a Artifact.MultipleArtifact artifact type. |
abstract Unit |
toCreate(type: ArtifactTypeT) Initiates a creation request for a single Artifact.Replaceable artifact type. |
Public methods
toAppendTo
abstract fun <ArtifactTypeT> toAppendTo(type: ArtifactTypeT): Unit where ArtifactTypeT : Artifact.MultipleArtifact<FileTypeT>, ArtifactTypeT : Artifact.Appendable
Initiates an append request to a Artifact.MultipleArtifact artifact type.
Parameters | |
---|---|
type: ArtifactTypeT |
The Artifact of FileTypeT identifying the artifact to append to. The artifact type must be Artifact.MultipleArtifact and Artifact.Appendable. As an example, let's take a Task that outputs a org.gradle.api.file.RegularFile: abstract class MyTask: DefaultTask() { @get:OutputFile abstract val outputFile: RegularFileProperty @TaskAction fun taskAction() { ... outputFile.get().asFile.write( ... ) ... } } and an ArtifactType defined as follows : sealed class ArtifactType<T: FileSystemLocation>( val kind: ArtifactKind ): MultipleArtifactType { object MULTIPLE_FILE_ARTIFACT: ArtifactType<RegularFile>(FILE), Appendable } You can then register the above task as a Provider of org.gradle.api.file.RegularFile for that artifact type: val taskProvider= projects.tasks.register(MyTask::class.java, "appendTask") artifacts.use(taskProvider) .wiredWith(MyTask::outputFile) .toAppendTo(ArtifactType.MULTIPLE_FILE_ARTIFACT) |
toCreate
abstract fun <ArtifactTypeT> toCreate(type: ArtifactTypeT): Unit where ArtifactTypeT : Artifact.SingleArtifact<FileTypeT>, ArtifactTypeT : Artifact.Replaceable
Initiates a creation request for a single Artifact.Replaceable artifact type.
Parameters | |
---|---|
type: ArtifactTypeT |
The Artifact of FileTypeT identifying the artifact to replace. The artifact type must be Artifact.Replaceable A creation request does not care about the existing producer, since it replaces the existing producer. Therefore the existing producer task will not execute (unless it produces other outputs). Please note that when such replace requests are made, the Task will replace initial AGP providers. You cannot replace the Artifact.MultipleArtifact artifact type; therefore, you must instead combine it using the TaskBasedOperation.wiredWith API. For example, let's take a Task that outputs a org.gradle.api.file.RegularFile: abstract class MyTask: DefaultTask() { @get:OutputFile abstract val outputFile: RegularFileProperty @TaskAction fun taskAction() { ... write outputFile ... } } An ArtifactType is defined as follows: sealed class ArtifactType<T: FileSystemLocation>(val kind: ArtifactKind) { object SINGLE_FILE_ARTIFACT: ArtifactType<RegularFile>(FILE), Replaceable } You can register a transform to the collection of org.gradle.api.file.RegularFile: val taskProvider= projects.tasks.register(MyTask::class.java, "replaceTask") artifacts.use(taskProvider) .wiredWith(MyTask::outputFile) .toCreate(ArtifactType.SINGLE_FILE_ARTIFACT) |