Если мы запустим сборку Gradle и одна из задач не будет выполнена, вся сборка немедленно остановится. Таким образом, у нас есть быстрый отзыв о нашем статусе сборки. Если мы не хотим этого и хотим, чтобы Gradle выполнил все задачи, хотя некоторые из них могли быть неудачными, мы используем параметр командной строки --continue
. Когда мы используем --continue
командной строки --continue
Gradle выполнит все задачи, в которых зависимые задачи не завершаются. Это также полезно в многомодульном проекте, где мы можем захотеть построить все проекты, даже если у некоторых могут быть неудачные тесты, поэтому мы получаем полный обзор неудачных тестов для всех модулей.
В следующем файле сборки Gradle у нас есть две задачи. Задача failTask
TaskExecutionException
для преднамеренного сбоя задачи. successTask
не подведет:
01
02
03
04
05
06
07
08
09
10
11
|
task failTask << { task -> println "Running ${task.name}" throw new TaskExecutionException( task, new Exception( 'Fail task on purpose' )) } task successTask << { println "Running ${it.name}" } |
Давайте запустим обе задачи из командной строки и посмотрим на результат:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
$ gradle failTask successTask :failTask Running failTask :failTask FAILED FAILURE: Build failed with an exception. * Where: Build file '/Users/mrhaki/samples/gradle/continue/build.gradle' line: 4 * What went wrong: Execution failed for task ':failTask' . > Fail task on purpose * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 4.148 secs $ |
Мы видим, что сборка не удалась, и выполняется только задача failTask
. Теперь мы запускаем те же две задачи, но используем параметр командной строки --continue
:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
$ gradle -- continue failTask successTask :failTask Running failTask :failTask FAILED :successTask Running successTask FAILURE: Build failed with an exception. * Where: Build file '/Users/mrhaki/samples/gradle/continue/build.gradle' line: 4 * What went wrong: Execution failed for task ':failTask' . > Fail task on purpose * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 6.918 secs $ |
На этот раз successTask
выполняется, хотя failTask
снова не удалось. Gradle будет отслеживать все задачи, которые не были выполнены, и отображает сводную информацию обо всех задачах, которые не удалось выполнить.
Ссылка: | Совершенство Gradle: продолжить сборку даже с ошибочными заданиями от нашего партнера по JCG Хьюберта Кляйна Иккинка в блоге JDriven . |