Как запустить команды командной строки в скомпилированном плагине Gradle? - PullRequest
0 голосов
/ 05 марта 2020

Как вы можете выполнить команду CMD из задачи Gradle без Gradle DSL (commandLine 'echo', ':)'), то есть что-то вроде:

open class MyTask : DefaultTask() {

    @TaskAction
    fun task() {
        Runtime.getRuntime().exec("echo :)") //Doesn't print anything
    }

}

1 Ответ

2 голосов
/ 05 марта 2020

Ничего не печатается, потому что метод exec выполняет данную команду в новом процессе, отдельном от процесса, обрабатывающего задачу Gradle (и имеет свои собственные потоки ввода / вывода).

Метод exec возвращает объект Process. Ссылаясь на документы, Процесс "обеспечивает управление собственными процессами, запускаемыми ProcessBuilder.start и Runtime.exe c".

Итак, чтобы захватить вывод выполненной команды, необходимо прочитать его из процесса этой команды.

Простой пример вывода на печать из echo :) может быть:

task something {
    doLast {
        Process echo = Runtime.getRuntime().exec("cmd /c echo :)")
        println new BufferedReader(new InputStreamReader(echo.getInputStream())).readLine()
    }
}

(у меня префикс cmd /c, из-за ОС Windows)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...