Можете ли вы создать задачу gradle, которая зависит от внутренних задач gradle?

#gradle

#gradle

Вопрос:

Я специально хочу посмотреть, можете ли вы создать задачу, которая зависит от внутренней задачи gradle «assembleRelease» в среде с несколькими проектами. Здесь нужно собрать много, много независимых частей, поэтому изменение во всех файлах сборки не является оптимальным.

Моя основная ситуация заключается в поиске задачи, например «release», которая может вызывать:a: assembleRelease , :b:assembleRelease и: c: assembleRelease без необходимости вводить имена всех проектов для начала.

Я попытался выполнить следующее определение задачи в корневом проекте build.gradle.kts:

 tasks.register("release") {
    finalizedBy(tasks.getByPath("assembleRelease"))
}
  

а также tasks.getByName и пытается пройти через gradle taskGraph. График задач вообще не кажется правильным путем, но я не уверен, является ли это возможной задачей или противоречит соглашениям gradle делать что-то таким образом.

Комментарии:

1. У вас не task A(dependsOn: ['B, 'C']) << { ... } работает?

2. Да, это работает. Я уточню, что конечная цель — включить тестирование и компиляцию релиза с задачей с произвольным именем. Ввод «gradle test assembleRelease» работает просто отлично, но я собираюсь объединить все в одну задачу.

Ответ №1:

Вы бы просто определили задачу, которая зависит от нескольких других задач.

Предполагая, что корневой проект:

 tasks {
    register("release") {
        dependsOn(
            named(":a:assembleRelease"),
            named(":b:assembleRelease:),
            named(":c:assembleRelease")
        )
    }
}
  

Вы можете добавить практически бесконечное количество зависимостей задач. Более подробную информацию см. в разделе Создание задач, в частности добавление зависимостей к задаче.