У меня есть очень простой Мультипроект построить, как показано ниже:Gradle: Задача не выполняет другую задачу на основе конфигурации он использует
Module1, который генерирует банку публичного API и выставляет его через "publicAPI "конфигурация:
configurations {
publicAPI
}
task generatePublicAPI(type: Jar) {
outputs.upToDateWhen { false }
baseName 'public-api'
from sourceSets.main.output
}
artifacts {
publicAPI generatePublicAPI
}
module2, который использует API банку общественной (путем ссылки конфигурации 'publicAPI' определен в Module1) для создания приложений банки:
configurations {
generateApplication
}
dependencies {
generateApplication project(path: ':module1', configuration: 'publicAPI')
}
task jarApp(type: Jar) {
baseName 'app'
from configurations.generateApplication.collect {
it.isDirectory() ? it : zipTree(it)
}
}
Теперь, когда я исполню «Gradle: module2: jarApp» задачу, я получил следующую ошибку:
Не удается развернуть ZIP «/ дома/PICASSO/Документы/GradlePlayground/module1/строить/LIBS/Государственно-api.jar» , как не существует
и я могу видеть, что Gradle был не пытается выполнить„generatePublicAPI“ Мо dule1.
Однако, если я "jarApp" задача зависит от "generatePublicAPI" задачи в явном виде,
task jarApp(dependsOn: 'module1:generatePublicAPI', type: Jar) {...}
тогда все в порядке.
BUT, не будет ли этот подход против одной из целей использования конфигурации зависимостей, так что мне не нужно беспокоиться о деталях построения модуля 1, например. какая задача генерирует банку и какие артефакты она производит?
Я думал, что gradle может решить задачи, которые необходимо выполнить, следуя «маршруту» ссылочной конфигурации зависимостей.
Я пропустил что-то здесь, так что задача «generatePublicAPI» может быть выполнена автоматически, без необходимости явно объявлять «dependsOn» для задачи «createApp»?
В основном, насколько я вижу 'module2' зависит от' module1'. Может быть, добавление 'evaluationDependsOn (': module1')' в build.gradle для 'module2' поможет? И это не тот случай, когда град всегда может разрешать зависимости между проектами/модулями. Иногда ему нужна помощь;). Вот почему методы определены. – Opal
Спасибо за указатель! Однако добавление «оценкиDependsOn (': modules1')» не работает. У меня такое же сообщение об ошибке. –
Является ли проект размещенным в Интернете? Github? – Opal