TransformOutputs

API Documentation:TransformOutputs

Note: This class is incubating and may change in a future version of Gradle.

The outputs of the artifact transform.

The registered output Files will appear in the transformed variant in the order they were registered.

Properties

No properties

Methods

MethodDescription
dir(path)
Incubating

Registers an output directory.

file(path)
Incubating

Registers an output file.

Script blocks

No script blocks

Method details

File dir(Object path)

Note: This method is incubating and may change in a future version of Gradle.

Registers an output directory.

For an absolute path, the location is registered as an output directory of the TransformAction. The path must to point to the InputArtifact, or point inside the input artifact if it is a directory. Example:

import org.gradle.api.artifacts.transform.TransformParameters;

public abstract class MyTransform implements TransformAction<TransformParameters.None> {
    @InputArtifact
    public abstract Provider<FileSystemLocation> getInputArtifact();
    @Override
    public void transform(TransformOutputs outputs) {
        outputs.dir(getInputArtifact().get().getAsFile());
        outputs.dir(new File(getInputArtifact().get().getAsFile(), "sub-dir"));
    }
}

For a relative path, Gradle creates an output directory into which the TransformAction must place its output files. Example:

import org.gradle.api.artifacts.transform.TransformParameters;

public abstract class MyTransform implements TransformAction<TransformParameters.None> {
    @Override
    public void transform(TransformOutputs outputs) {
        File myOutput = outputs.dir("my-output");
        Files.write(myOutput.toPath().resolve("file.txt"), "Generated text");
    }
}

Note: it is an error if the registered directory does not exist when the TransformAction.transform(org.gradle.api.artifacts.transform.TransformOutputs) method finishes.

File file(Object path)

Note: This method is incubating and may change in a future version of Gradle.

Registers an output file.

For an absolute path, the location is registered as an output file of the TransformAction. The path is required to point to the InputArtifact or be inside it if the input artifact is a directory. Example:

import org.gradle.api.artifacts.transform.TransformParameters;

public abstract class MyTransform implements TransformAction<TransformParameters.None> {
    @InputArtifact
    public abstract Provider<FileSystemLocation> getInputArtifact();
    @Override
    public void transform(TransformOutputs outputs) {
        File input = getInputArtifact().get().getAsFile();
        if (input.isFile()) {
            outputs.file(input);
        } else {
            outputs.file(new File(input, "file-in-input-artifact.txt"));
        }
    }
}

For a relative path, a location for the output file is provided by Gradle, so that the TransformAction can produce its outputs at that location. The parent directory of the provided location is created automatically when calling the method. Example:

import org.gradle.api.artifacts.transform.TransformParameters;

public abstract class MyTransform implements TransformAction<TransformParameters.None> {
    @InputArtifact
    public abstract Provider<FileSystemLocation> getInputArtifact();
    @Override
    public void transform(TransformOutputs outputs) {
        File myOutput = outputs.file("my-output.transformed");
        Files.write(myOutput.toPath(), "Generated text");
    }
}

The registered file needs to exist when the TransformAction.transform(org.gradle.api.artifacts.transform.TransformOutputs) method finishes.