TransformOutputs

构件转换的输出。

注册的输出 File 将按照它们被注册的顺序出现在转换后的变体中。

属性

无属性

方法

方法描述
dir(path)

注册一个输出目录。

file(path)

注册一个输出文件。

脚本块

无脚本块

方法详情

File dir(Object path)

注册一个输出目录。

对于绝对路径,该位置被注册为 TransformAction 的输出目录。该路径必须指向 InputArtifact,或者如果输入构件是一个目录,则指向输入构件内部。示例

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"));
    }
}

对于相对路径,Gradle 创建一个输出目录,TransformAction 必须将输出文件放置到其中。示例

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");
    }
}

注意: 如果注册的目录在 TransformAction.transform(org.gradle.api.artifacts.transform.TransformOutputs) 方法完成时不存在,则会发生错误。

File file(Object path)

注册一个输出文件。

对于绝对路径,该位置被注册为 TransformAction 的输出文件。该路径必须指向 InputArtifact,或者如果输入构件是一个目录,则位于其内部。示例

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"));
        }
    }
}

对于相对路径,Gradle 提供了输出文件的位置,以便 TransformAction 可以在该位置生成其输出。当调用该方法时,将自动创建所提供位置的父目录。示例

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");
    }
}

TransformAction.transform(org.gradle.api.artifacts.transform.TransformOutputs) 方法完成时,注册的文件需要存在。