# TransformAction

API Documentation: | `TransformAction`

Interface for artifact transform actions.

A transform action implementation is an abstract class implementing the `TransformAction.transform(org.gradle.api.artifacts.transform.TransformOutputs)` method. A minimal implementation may look like this:

    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();
            File output = outputs.file(input.getName() + ".transformed");
            // Do something to generate output from input
        }
    }

Implementations of TransformAction are subject to the following constraints:

- Do not implement `TransformAction.getParameters()` in your class, the method will be implemented by Gradle.
- Implementations may only have a default constructor.

Implementations can receive parameters by using annotated abstract getter methods.

- An abstract getter annotated with `InputArtifact` will receive the input artifact location, which is the file or directory that the transform should be applied to.
- An abstract getter with `InputArtifactDependencies` will receive the dependencies of its input artifact.

### Properties

Property | Description
`parameters` | The object provided by `TransformSpec.getParameters()` when registering the artifact transform.

### Methods

Method | Description
`transform(outputs)` | Executes the transform.

### Script blocks

No script blocks

### Property details

#### `T` `parameters` (read-only)

The object provided by `TransformSpec.getParameters()` when registering the artifact transform.

Do not implement this method in your subclass. Gradle provides the implementation when registering the transform action via `DependencyHandler.registerTransform(java.lang.Class, org.gradle.api.Action)`.

### Method details

#### `void` `transform`(`TransformOutputs` outputs)

Executes the transform.

This method must be implemented in the subclass.