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')
    }
}
Другие вопросы по тегам