# Interface TransformOutputs

public interface TransformOutputs
The outputs of the artifact transform.

The registered output `File`s will appear in the transformed variant in the order they were registered.

Since:
  5.3

- ## Method Summary

  Modifier and Type
  Method
  Description
  `File`
  `dir(Object path)`
  Registers an output directory.
  `File`
  `file(Object path)`
  Registers an output file.

- ## Method Details

  - ### dir

    File dir(Object path)
    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(TransformOutputs)` method finishes.

    Parameters:
      `path` - path of the output directory
    Returns:
      determined location of the output
    Since:
      5.3

  - ### file

    File file(Object path)
    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(TransformOutputs)` method finishes.

    Parameters:
      `path` - path of the output file
    Returns:
      determined location of the output
    Since:
      5.3