Gradle - как предотвратить запуск зависимых задач субмодуля в случае сбоя зависимой задачи? - PullRequest
1 голос
/ 23 января 2020

В многомодульном проекте с модулями mod-a и mod-b, mod-b имеет mod-a в качестве зависимости lib проекта:

project(":mod_b") {
    dependencies {
        implementation project(':mod_a')
    }
}

И mod-a, и mod-b настроен для публикации sh артефактов Maven (jar), если их тесты пройдены, с использованием плагина maven-publi sh :

// within each module's build.gradle
tasks.withType(AbstractPublishToMaven) {
    dependsOn test
}

Когда я запускаю Gradle с --continue флаг, тогда если тесты в mod-a не пройдены, то артефакты mod-a не публикуются. Тем не менее, артефакты публикуются для mod-b. Почему это и как предотвратить это (я sh продолжаю использовать опцию --continue)?

например, это приводит к публикации com.example:mod-b:x.y.z, когда я не sh это к:

./gradlew --continue clean publishToMavenLocal

то есть, если было 3 модуля (mod-a -depends-on-> mod-b -depends-on-> mod-c), то если только тесты mod-b не пройдены, а затем только mod-a должно быть опубликовано).

1 Ответ

1 голос
/ 23 января 2020

Решение состоит в том, чтобы сделать публичные sh задачи также зависимыми от задачи buildNeeded. Задача buildNeeded создает и тестирует все другие проекты, которые требуются для данного проекта. Таким образом, если зависимая задача завершится неудачно, buildNeeded будет помечена как неудачная, и, таким образом, задача publi sh не будет запущена.

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