Статьи

Gradle Goodness: продолжить сборку даже с неудачными заданиями

Если мы запустим сборку 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 .