Я хочу чистую сборку, где вы можете точно видеть, что произошло, но вся информация сохраняется - так по существу для каждой задачи, я хочу, чтобы она записывала вывод в файл и отображала его только если задача не выполнена.Задача Gradle doLast, если задача не выполнена
Я пытался добиться этого в градиенте, но я побежден, потому что doLast не запускается, если задача не работает. Вот мой «почти» рабочий образец:
task fakeTask(type: Exec) {
standardOutput = new ByteArrayOutputStream()
commandLine 'cmd', '/c', 'silly'
doLast {
new File("build.log") << standardOutput.toString()
if (execResult.exitValue != 0) println standardOutput.toString()
}
}
Есть ли альтернатива doLast, которая будет работать в любое время? Любой другой способ сделать это? - особенно, поскольку я хочу сделать это для каждой отдельной задачи, которую у меня есть?
Я действительно задавался вопросом об этом - но по существу я не хочу игнорировать значение выхода - могу ли я затем выполнить задачу, если я сделаю то, что мне нужно? –
На самом деле, это не так уж плохо: task fakeTask (type: Exec) { standardOutput = new ByteArrayOutputStream() commandLine 'cmd', '/ c', 'глупо' ignoreExitValue = true; doLast { новый файл ("fakeTaskOutput.txt") << standardOutput.toString() если (execResult.exitValue! = 0) { Println standardOutput.toString() бросить новый GradleException ("faketask вернулся ExitCode из" + execResult.exitValue) } } } –
Точно вы сообщаете заданию exec игнорировать значение выхода, но вы обрабатываете его самостоятельно и генерируете исключение в конце. – RaGe