我正在一個 Android 專案的 kotlin 中實作 Gradle 插件。插件的目標是運行一個 bash 腳本并對結果做一些事情。我已經設法讓腳本運行,但我不知道如何將腳本的輸出保存到變數中。
我有一個正在作業的 gradle 任務,可以完成我在插件中想要實作的目標:
task myTask(type: Exec) {
executable 'sh'
commandLine "./my-script.sh", "."
standardOutput = new ByteArrayOutputStream()
doLast {
def res = standardOutput.toString().split(',')
println "Output: ${res[0]}"
println "Output1: ${res[1]}"
println "Output2: ${res[2]}"
println "Output3: ${res[3]}"
println "Output4: ${res[4]}"
}
}
我的插件只運行我的腳本而不將結果存盤在變數中,如下所示:
class MyGradlePlugin : Plugin<Project> {
override fun apply(project: Project) = project.run {
project.afterEvaluate {
exec {
executable("sh")
commandLine("./my-script.sh", ".")
}
}
}
}
我試過的
我嘗試添加standardOutput,因為這就是使它適用于該任務的原因:
class MyGradlePlugin : Plugin<Project> {
override fun apply(project: Project) = project.run {
project.afterEvaluate {
val stdout = ByteArrayOutputStream()
exec {
executable("sh")
commandLine("./my-script.sh", ".")
standardOutput = stdout
}
}
}
}
但是,這不起作用,Android Studio 給出了這個錯誤:Cannot access class 'java.io.OutputStream'. Check your module classpath for missing or conflicting dependencies
即使它確實有效,我也不知道如何將結果保存在變數中,就像我在任務中所做的那樣。這樣做不起作用,因為res設定為ExecResult:
class MyGradlePlugin : Plugin<Project> {
override fun apply(project: Project) = project.run {
project.afterEvaluate {
val stdout = ByteArrayOutputStream()
val res = exec {
executable("sh")
commandLine("./my-script.sh", ".")
standardOutput = stdout
}
}
}
}
你知道我做錯了什么嗎?任何幫助是極大的贊賞。謝謝!
uj5u.com熱心網友回復:
感謝@romtsn 的評論,我設法找到了一個非常簡單的解決方案。
class MyGradlePlugin : Plugin<Project> {
override fun apply(project: Project) = project.run {
project.afterEvaluate {
val stdout = ByteArrayOutputStream()
val res = exec {
executable("sh")
commandLine("./my-script.sh", ".")
standardOutput = stdout
}
val res = stdout.toString().split(',')
println "Output: ${res[0]}"
println "Output1: ${res[1]}"
println "Output2: ${res[2]}"
println "Output3: ${res[3]}"
println "Output4: ${res[4]}"
}
}
}
Android Studio 仍然給我OutputStream錯誤,但它仍然有效。我懷疑這是 Android Studio 的問題。使快取無效并重新啟動并沒有讓它消失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/432346.html
標籤:安卓 毕业典礼 android-gradle-插件 毕业插件 gradle-kotlin-dsl
