Путаница "построить" задача gradle
Привет, у меня есть настройка нескольких проектов Gradle
-root_project
|-sub_project1
|-sub_project2
|-sub_project3
Все прекрасно работает, но одна вещь сводит меня с ума. В моем сценарии сборки:
defaultTasks 'build' <- this works just fine
task buildroom (description: 'This task is invoked by build room script, invokes default task plus publishes artifacts') {
// dependsOn('build') <-- this doesn't work
// alternative
dependsOn(":sub_project1:build")
dependsOn(":sub_project2:build")
когда я звоню из командной строки 'gradlew' <- задача по умолчанию выполняется
когда я вызываю из командной строки 'gradlew tasks' <- задача в разделе 'все задачи, запускаемые из корневого проекта', я вижу 'build'
но когда я пытаюсь добавить depenOn('build'), зависимость On(':build') или зависимость On(':root:build'), он говорит мне
Что пошло не так: Выполнение не удалось для задачи ": задачи".
Не удалось определить зависимости задачи ': buildroom'.
Плагин "base" добавляет "сборка" и "чистая" задача, но не сборка...
какие-нибудь советы?
1 ответ
build
задача объявлена java-base
плагин. Вполне вероятно, что ваш корневой проект не применяется (прямо или косвенно) java-base
и, следовательно, не имеет build
задача. Вот почему dependsOn("build")
, который добавляет зависимость задачи от задачи с именем build
в том же проекте, в конце концов, вызывает ошибку. defaultTasks
отличается в этом:
- Он принимает только имена задач (тогда как
dependsOn
также принимает пути задач иTask
объекты). - Его имена задач разрешаются в задачи, как если бы имена задач были введены в командной строке. Другими словами, во всех проектах выполняется поиск задачи с заданным именем, и возвращается набор соответствующих задач.