コンパイルのGradleプラグインでコマンドラインコマンドを実行するには?

ジョン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で、コマンド接頭辞を)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=25482&siteId=1