TransformOutputs

artifact transform 的输出。

注册的输出 Files 将按注册顺序出现在 transformed variant 中。

属性

无属性

方法

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