Gradle, похоже, игнорирует зависимости проекта
У нас есть многопроектная сборка с внутрипроектными зависимостями между "включенными" проектами в файле settings.gradle. Существует ряд взаимозависимостей между различными проектами, выраженными в виде зависимостей проекта, включенных в список зависимостей проекта небольшого размера.
Хотя этот подход прекрасно работает в нескольких других многопроектных сборках, в этом конкретном проекте зависимости проекта не соблюдаются, поэтому подпроекты создаются в неправильном порядке и сборка завершается неудачно.
Итак, для начала, как мы диагностируем, что здесь происходит, чтобы определить, является ли это ошибкой?
Мы работаем: Gradle (Wrapper) Версия: 3.1 Операционная система: Windows 8.1 6.3 amd64 JDK: Oracle 1.8.0_65
Итак, в конце концов мы определили, что проблема заключалась в следующем: в блоке configurations.all был код, который устанавливал useVersion на различные зависимости. Если одна из этих зависимостей оказалась зависимостью проекта, часть зависимости проекта нарушается.
1 ответ
Трудно ответить, не видя соответствующие фрагменты build.gradle
а также обзор того, как оскорбительные проекты включают друг друга. Вот пара вероятных кандидатов
Иногда оценка одного проекта зависит от оценки другого, в этих случаях вы можете использовать evaluationDependsOn
project(':projectA') {
evaluationDependsOn(':projectB')
}
project(':projectB') {
project(':projectA').tasks.create(...)
}
В случаях, когда существует циклическая ссылка между зависимостями проекта, вы можете разорвать цикл, добавив дополнительную конфигурацию (и)
project(':projectA') {
configurations {
base
compile.extendsFrom base
}
dependencies {
base 'aaa:bbb:1.0'
compile project(path: ':projectB', configuration: 'base')
}
}
project(':projectB') {
configurations {
base
compile.extendsFrom base
}
dependencies {
base 'ccc:ddd:1.0'
compile project(path: ':projectA', configuration: 'base')
}
}