TransformOutputs

artifact 转换的输出。

注册的输出 Files 将按照注册的顺序出现在转换后的变体中。

属性

无属性

方法

方法描述
dir(path)

注册一个输出目录。

file(path)

注册一个输出文件。

脚本块

无脚本块

方法详情

File dir(Object path)

注册一个输出目录。

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

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,或者如果输入 artifact 是一个目录,则在其内部。示例

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) 方法完成后,注册的文件必须存在。