这个问题的原因是在模块间存在循环依赖,而注解处理器不支持处理循环依赖的情况。因此,需要确保所有涉及到循环依赖的模块都被排除在注解处理器之外。
可以通过以下方式来解决这个问题:
- 将涉及到循环依赖的模块分离出去,成为一个单独的模块。
- 在对应的build.gradle文件中,使用exclude方法将其从注解处理器中排除掉。
例如,在上述错误信息中提到了两个涉及到循环依赖的模块:feign-api和item-service。如果我们想要将它们排除在注解处理器之外,可以在对应的build.gradle文件中加入如下代码:
compileJava {
options.compilerArgs += ["--module-path", classpath.asPath, "--add-modules", "ALL-MODULE-PATH"]
options.compilerArgs += ["--patch-module", "feign-api=" + project(":feign-api").sourceSets.main.java.outputDir]
options.compilerArgs += ["--patch-module", "item-service=" + project(":item-service").sourceSets.main.java.outputDir]
options.annotationProcessorPaths = configurations.annotationProcessor
.filter { it.name.endsWith('jar') }
}
其中,options.compilerArgs是用来设置编译选项参数的。–patch-module参数用来指定补丁模块(即将要被排除在注解处理器之外的模块),后面紧跟着的是该模块的路径。在这里,我们将feign-api和item-service两个模块都设置为补丁模块。
最后,重新运行项目即可解决此问题。