API 文档 | TransformOutputs |
---|
artifact transform 的输出。
注册的输出 File
s 将按注册顺序出现在 transformed variant 中。
注册一个输出目录。
对于绝对路径,该位置被注册为 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)
方法完成时,注册的目录不存在,将会发生错误。
注册一个输出文件。
对于绝对路径,该位置被注册为 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)
方法完成时,注册的文件必须存在。