java - Gradle 在使用 annotationProcessor 时引发错误:以下任务之间的循环依赖关系
问题描述
我正在尝试使用 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)
问题:
- 哪里有循环依赖?
- 如何在没有任何错误的情况下构建项目?
- 应该是结构不对吧?
我将不胜感激任何互动:)
解决方案
推荐阅读
- jenkins - Jenkins 管道代理使用环境变量
- ios - 如何向具有 yelp api 数据的表视图添加搜索功能?
- django - Django模板:如何传递格式化字符串以包含标签
- jpa - JPARepository - 有时会创建重复记录
- git - 如何撤消 git 丢弃
- git - Teamcity 代理 - 无法对代理执行结帐。HTTP 代码 = 404
- shell - 从一个节点到另一个节点的 Nodetool 命令不起作用
- javascript - Express.js 跨域会话未保存
- serialization - Fabric.js:如何序列化/反序列化一些全局数据?如何扩展画布对象?
- java - 如何将两组中唯一的一组点存储到新的int set java(对象)中?