пропустить задачу в Gradle, но только если она существует - PullRequest
1 голос
/ 10 марта 2020

У меня есть сложный проект Gradle для нескольких подпроектов с небольшой kotlin мультиплатформой внутри и специальным модулем Grax.

Моя проблема в том, когда я хочу запустить сборку, пропустив некоторые задачи ( главным образом test), не все проекты имеют одно и то же имя тестовой задачи: для некоторых это вызов jsTest, для другого nodeJsTest, для другого jvmTest.

Поэтому, когда я вызываю gradle build -x jsTest -x nodeJsTest, у меня возникает ошибка, потому что иногда некоторые из Задачи, которые нужно пропустить, не существуют.

Как я могу пропустить задачу и проигнорировать ее, если она не существует?

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Вместо того, чтобы тестовые задачи зависели от сборки напрямую, вы можете создать общую c тестовую задачу task testType в середине сборки триггеров task testType, а затем она запускает jsTest или любую другую соответствующую тестовую задачу, которую вы создаете. в этом модуле.
Теперь вы можете безопасно запустить gradle build -x testType.

Например (в вашем файле .gradle):

task jsTest { ... }
task testType { dependsOn jsTest }
build.finalizedBy(testType)

Проделайте то же самое с остальными файлами тестовых заданий, вы также можете создать task testType globaly, если хотите решение быть чище.

0 голосов
/ 10 марта 2020

Вы можете изменить свой файл Gradle так, чтобы он выполнял что-то вроде (Kotlin DSL):

tasks.named("build") {
    dependsOn.removeIf { it.toString().contains("flakyTest") }
}

В противном случае вам нужно будет объединить свои задачи с тем, что вы хотите конкретно, выполнив ./gradlew myTask anotherTask anotherOne andAnotherOne или создать задача, которая dependsOn все задачи, которые вы хотите.

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