ジョンSardinha:
どのようにあなたはGradleのDSL(なしGradleのタスクからCMDコマンドを実行することができますcommandLine 'echo', ':)'
)、のようなつまり、何か:
open class MyTask : DefaultTask() {
@TaskAction
fun task() {
Runtime.getRuntime().exec("echo :)") //Doesn't print anything
}
}
itwasntme:
何もするので、印刷されていないexec
新たなプロセスでコマンドを指定されたメソッドの実行は、Gradleのタスクを処理するプロセスを分離(およびそれ自身のI / Oストリームを有しています)。
exec
この方法は、プロセスオブジェクトを返します。ドキュメントを引用して、プロセスは「ProcessBuilder.startとのRuntime.execによって開始されたネイティブ・プロセスの制御を提供します」。
だから、実行したコマンドの出力をキャプチャし、そのコマンドのプロセスからそれを読むために必要です。
以下からの出力を印刷する簡単な例echo :)
が考えられます。
task something {
doLast {
Process echo = Runtime.getRuntime().exec("cmd /c echo :)")
println new BufferedReader(new InputStreamReader(echo.getInputStream())).readLine()
}
}
(私は持っていますcmd /c
ので、WindowsのOSで、コマンド接頭辞を)