InAndOutDirectoryOperationRequest
@Incubating interface InAndOutDirectoryOperationRequest<TaskT : Task>
com.android.build.api.artifact.InAndOutDirectoryOperationRequest |
Summary
Public methods |
|
---|---|
abstract Unit |
toTransform(type: ArtifactTypeT) Initiates a transform request to a single Artifact.Transformable artifact type. |
abstract ArtifactTransformationRequest<TaskT> |
toTransformMany(type: ArtifactTypeT) Initiates a transform request to a single Artifact.Transformable artifact type that can contain more than one artifact. |
Public methods
toTransform
abstract fun <ArtifactTypeT> toTransform(type: ArtifactTypeT): Unit where ArtifactTypeT : Artifact.SingleArtifact<Directory>, ArtifactTypeT : Artifact.Transformable
Initiates a transform request to a single Artifact.Transformable artifact type.
Parameters | |
---|---|
type: ArtifactTypeT |
The Artifact identifying the artifact to transform. The Artifact's Artifact.kind must be Artifact.DIRECTORY The artifact type must be Artifact.SingleArtifact and Artifact.Transformable. Let's take a Task transforming an input org.gradle.api.file.Directory into an output: abstract class MyTask: DefaultTask() { @get:InputFiles abstract val inputDir: DirectoryProperty @get:OutputDirectory abstract val outputDir: DirectoryProperty @TaskAction fun taskAction() { ... read inputFile and write outputFile ... } } An ArtifactType defined as follows : sealed class ArtifactType<T: FileSystemLocation>(val kind: ArtifactKind) { object SINGLE_DIR_ARTIFACT: ArtifactType<Directory>(DIRECTORY), Single, Transformable } You can register a transform to the collection of org.gradle.api.file.RegularFile. val taskProvider= projects.tasks.register(MyTask::class.java, "transformTask") artifacts.use(taskProvider) .wiredWithDirectories( MyTask::inputFile, MyTask::outputFile) .toTransform(ArtifactType.SINGLE_DIR_ARTIFACT) |
toTransformMany
abstract fun <ArtifactTypeT> toTransformMany(type: ArtifactTypeT): ArtifactTransformationRequest<TaskT> where ArtifactTypeT : Artifact.SingleArtifact<Directory>, ArtifactTypeT : Artifact.ContainsMany
Initiates a transform request to a single Artifact.Transformable artifact type that can contain more than one artifact.
Parameters | |
---|---|
type: ArtifactTypeT | The Artifact of the Directory identifying the artifact to transform. |
Return | |
---|---|
ArtifactTransformationRequest that will allow processing of individual artifacts located in the input directory. The artifact type must be Artifact.SingleArtifact, Artifact.Transformable, and Artifact.ContainsMany. For example, let's take a Task to transform a list of org.gradle.api.file.RegularFile as inputs into a single output: abstract class MyTask: DefaultTask() { @get:InputFiles abstract val inputFolder: DirectoryProperty @get:OutputFile abstract val outputFolder: DirectoryProperty @Internal abstract Property<ArtifactTransformationRequest<MyTask>> getTransformationRequest() @TaskAction fun taskAction() { transformationRequest.get().submit( ... submit a work item for each input file ... ) } } You then register the task as follows: val taskProvider= projects.tasks.register(MyTask::class.java, "combineTask") val transformationRequest = artifacts.use(taskProvider) .wiredWith( MyTask::inputFolder, MyTask::outputFolder) .toTransformMany(ArtifactType.APK) taskProvider.configure { task -> task.getTransformationRequest().set(transformationRequest) } |