Gradle вызывает ошибку при использовании annotationProcessor: круговая зависимость между следующими задачами - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать многопроектную сборку с 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)

Вопросы:

  • Где существует круговая зависимость?
  • Как я могу построить проект без каких-либо ошибок?
  • Возможно, структура неверна?

Буду благодарен за любое взаимодействие:)

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