многопроектная сборка: выполнить одну задачу перед любой сборкой проекта - PullRequest
0 голосов
/ 30 октября 2018

В многопроектной сборке Android, например

root +--- build.gradle +--- settings.gradle +--- subproject1 \--- build.gradle \--- subproject2 \--- build.gradle

Я хотел бы выполнить задачу, которая генерирует код, до того, как какой-либо из проектов (subproject1, subproject2) будет создан. Задача генерации кода существует один раз для всех проектов. Я хотел бы положить его в корень build.gradle. Также в корне build.gradle все проекты (allprojects) зависят от задачи генерации кода.

task code_generating_task << {
  println "I generate code here"
}
preBuild.dependsOn code_generating_task

Не работает, потому что preBuild не определен в корне build.gradle.

1 Ответ

0 голосов
/ 30 октября 2018

Можно объявить общую / поперечную задачу непосредственно в скрипте сборки корневого проекта, как вы это сделали. Чтобы создать зависимости между задачей preBuild каждого подпроекта и этой общей задачей code_generating_task, вы можете написать следующий блок в сценарии сборки корневого проекта:

gradle.projectsEvaluated {
    subprojects{
        // TODO : add a check on 'preBuild' task existence in this subproject.
        preBuild.dependsOn code_generating_task
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...