Путаница "построить" задача 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 объекты).
  • Его имена задач разрешаются в задачи, как если бы имена задач были введены в командной строке. Другими словами, во всех проектах выполняется поиск задачи с заданным именем, и возвращается набор соответствующих задач.
Другие вопросы по тегам