maven注释处理不适用于lombok和java
我正在做我自己的多模块项目,在那里我正在使用lombok。 当我想启动应用程序时出现问题,终端显示错误:
java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [domain,service] are excluded from annotation processing
而且modules
注释处理不再有错误,但有新的错误。
使用lombok
的类不识别builder
方法
java: cannot find symbol symbol: method builder()
因为lombok需要注释处理-当我打开intellij时,即使intellij也会显示消息:Do you want to enable lombok annotations?
有什么办法解决这个问题吗
# 1 楼答案
这个问题本身可能需要更多的上下文,但与此同时,查看lombok的IDEA设置可能会对您有所帮助。TLDR在IDEA上使用lombok时,您可以使用此扩展获得提示,而无需重建整个项目(因为在运行编译器时需要进行注释处理)
# 2 楼答案
从错误消息中,我得出结论:
模块中存在一个(依赖关系)循环:
不幸的是,错误消息并不建议您对这些周期进行椭圆化,而是(相当温和且以任务为中心)仅“将它们从预处理中排除”(lombok等人当然需要这一点)
为了证明这一点(当你用谷歌搜索“java模块周期”时,你只会在顶部结果中点击这个问题,。。而“java模块周期是好是坏?”把我带到这里:
Why are cyclic imports considered so evil? ),但我认为“循环模块”是一种“反模块模式”,只要你的“系统”很小且过于可视:打破这些循环&;避开他们强>
因此,在您的情况下,我将避免从
service
到domain
的任何导入,这将重新启用预处理&;龙目山
# 3 楼答案
好的,我在
@xerx593
用户的帮助下解决了这个问题它不起作用的主要原因是这部分错误:
modules from cycle [domain,service]
这意味着在我的项目中有一个模块周期我有三个模块:
domain
,service
和ui
其中service
模块取决于domain
模块和ui
模块取决于service
因此,结构如下:domain
->service
->ui
:在
ui
模块中我的pom.xml
应该实现service
模块依赖关系我的
service
模块中的pom.xml
应该实现domain
模块依赖关系和
domain
模块中的pom.xml
不应实现任何ui
和service
依赖关系但是由于我的错误,我在
domain
pom中实现了service
依赖。xml和模块周期存在问题dmoain
->service
->domain
在我删除了
domain
模块中的这个service
依赖项之后,一切都正常了