2016-01-13 2 views
2

Некоторые задачи Gradle Exec создают избыточный вывод, когда команда обновляет текст на месте.Подавление интерактивного вывода в задачах управления Gradle

При запуске с терминала эти команды производят пару строк вывода, которые обновляются на месте.

При запуске внутри Gradle, они производят новую линию продукции каждый раз, когда что-то обновляется, например:

докер построить:

task dockerBuild(type: Exec) { 
    commandLine 'docker', 'build', '-t', 'foo', '.' 
} 

при запуске производит:

Sending build context to Docker daemon 557.1 kB 
Sending build context to Docker daemon 1.114 MB 
Sending build context to Docker daemon 1.646 MB 
Sending build context to Docker daemon 2.17 MB 
Sending build context to Docker daemon 2.72 MB 
Sending build context to Docker daemon 3.277 MB 
Sending build context to Docker daemon 3.834 MB 
Sending build context to Docker daemon 4.391 MB 
... hundreds more lines ... 

wget:

task fetchData(type: Exec) { 
    commandLine 'wget', 'http://example.org/some/large/file' 
} 

при запуске выходы:

HTTP request sent, awaiting response... 200 OK 
Length: 209715200 (200M) [application/zip] 
Saving to: '200MB.zip' 

    0K .......... .......... .......... .......... .......... 0% 5.02M 40s 
50K .......... .......... .......... .......... .......... 0% 6.34M 36s 
100K .......... .......... .......... .......... .......... 0% 6.68M 34s 
150K .......... .......... .......... .......... .......... 0% 6.42M 33s 
200K .......... .......... .......... .......... .......... 0% 6.41M 33s 
250K .......... .......... .......... .......... .......... 0% 7.12M 32s 
... thousands more lines ... 

Является ли это, что я могу исправить изнутри Gradle (например, попросить его выполнить команды в неинтерактивном режиме), или это зависит от отдельных приложений, чтобы предоставить флаги для отключения такого типа вывода?

ответ

1

От Exec DSL documentation вы можете перенаправить вывод исполняемого файла в собственный поток.

//store the output instead of printing to the console: 
standardOutput = new ByteArrayOutputStream() 

Можно также необязательно перенаправить поток ошибок, чтобы сохранить его полностью тихо, но оставить его нетронутым, вы увидите какую-либо ошибку выхода в Gradle журнала.

Смежные вопросы