Stay organized with collections
Save and categorize content based on your preferences.
InAndOutDirectoryOperationRequest
interface InAndOutDirectoryOperationRequest<TaskT : Task>
Summary
Public functions
fun <ArtifactTypeT : Artifact.Single<Directory> & Artifact.Transformable> toTransform(
type: ArtifactTypeT
): Unit
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.Single 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)
|
fun <ArtifactTypeT : Artifact.Single<Directory> & Artifact.ContainsMany> toTransformMany(
type: ArtifactTypeT
): ArtifactTransformationRequest<TaskT>
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.
|
Returns |
ArtifactTransformationRequest<TaskT> |
ArtifactTransformationRequest that will allow processing of individual artifacts located in the input directory.
The artifact type must be Artifact.Single , 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) }
|
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2023-04-25 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-04-25 UTC."],[],[]]