Зависимости Gradle: настройка многомодульной сборки с взаимозависимостями - PullRequest
0 голосов
/ 13 июля 2020

У меня сложный проект, в нем около 55 модулей. Я использую Intellij Idea. До сих пор я создавал файл сборки ANT, используя пункт меню в Intellij, и делал сборку из командной строки. Недавно Intellij прекратил поддержку этой функции. Сейчас я перехожу на Gradle, но сталкиваюсь с проблемами, связанными с внутренними зависимостями между модулями. Например, структура моего проекта примерно такая:

Основной проект

- Подпроект A

- Подпроект B

- Подпроект C

- Подпроект D

- Подпроект E

Подпроект A зависит от B

Подпроект B зависит от C

Подпроект D зависит от C

Подпроект E зависит от C

Основной проект зависит от A, B, C, D, E

Это очень простое представление, но на самом деле зависимости довольно сложные. Я сослался на руководство Gradle, но оно показывает простые зависимости мультипроектов. т.е.

Основной проект

- Подпроект A

- Подпроект B

- Подпроект C

- Подпроект D

- Подпроект E

Основной проект зависит от A, B, C, D, E

Он не показывает, как настроить взаимозависимость между A, B , C, D, E сами. Я также не могу сейчас изменить структуру каталогов. Как мне go настроить проект?

1 Ответ

1 голос
/ 13 июля 2020

вы можете напрямую обращаться к братьям и сестрам на уровне подпроекта, например, в подпроектах a, b, d, e implementation project(':spc')

мой пример root settings.gradle include 'spa', 'spb', 'spc', 'spd', 'spe'

в подпроектах a, b, d, e - build.gradle

dependencies {
    implementation project(':spc')
}

запуск вывода

-bash$ gradle :spa:build -m
:spc:compileJava SKIPPED
:spa:compileJava SKIPPED
:spa:processResources SKIPPED
:spa:classes SKIPPED
:spa:jar SKIPPED
:spa:assemble SKIPPED
:spa:compileTestJava SKIPPED
:spa:processTestResources SKIPPED
:spa:testClasses SKIPPED
:spc:processResources SKIPPED
:spc:classes SKIPPED
:spc:jar SKIPPED
:spa:test SKIPPED
:spa:check SKIPPED
:spa:build SKIPPED

BUILD SUCCESSFUL in 504ms
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...