Я пытаюсь создать многопроектную сборку с Gradle со следующей структурой проектов:
Root project 'optget'
+--- Project ':og-annotation'
+--- Project ':og-apps'
| +--- Project ':og-apps:ast'
| +--- Project ':og-apps:ref'
| \--- Project ':og-apps:run'
\--- Project ':og-processors'
+--- Project ':og-processors:ast'
+--- Project ':og-processors:ref'
\--- Project ':og-processors:run'
Корень build.gradle
устанавливает repositories
для всех проектов.
Файл og-annotation/build.gradle
вообще не имеет зависимостей и применяется только java-plugin
.
Файл og-processors/ast/build.gradle
имеет несколько зависимостей, среди которых есть проект og-annotation
:
plugins {
id 'java-library'
}
dependencies {
annotationProcessor 'org.projectlombok:lombok:1.14.8'
implementation project(':og-annotation') // <- using the annotation
implementation 'com.sun:tools:1.7.0.13'
implementation 'org.projectlombok:lombok:1.14.8'
}
Самый интересный и запутанный файл для меня - это og-apps/ast/build.gradle
(каталог og-apps
содержит примеры проектов, использующих модули og-annotation
и og-processors
):
plugins {
id 'java'
}
dependencies {
compile project(':og-annotation')
annotationProcessor project(':og-processors:ast')
}
Так что, когда япри попытке построить проект я получаю следующую ошибку:
Circular dependency between the following tasks:
:og-apps:ast:classes
\--- :og-apps:ast:compileJava
\--- :og-apps:ast:jar
\--- :og-apps:ast:classes (*)
(*) - details omitted (listed previously)
Вопросы:
- Где существует круговая зависимость?
- Как я могу построить проект без каких-либо ошибок?
- Возможно, структура неверна?
Буду благодарен за любое взаимодействие:)