API 文件 | TransformOutputs (轉換輸出) |
---|
產出物轉換的輸出。
已註冊的輸出 File
將會以它們被註冊的順序出現在轉換後的變體中。
註冊一個輸出目錄。
對於絕對路徑,該位置會被註冊為 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)
方法完成時,已註冊的目錄不存在,則會發生錯誤。
註冊一個輸出檔案。
對於絕對路徑,該位置會被註冊為 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)
方法完成時,已註冊的檔案需要存在。