有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

因此,我关闭了项目设置中的注释处理 enter image description here

而且modules注释处理不再有错误,但有新的错误。 使用lombok的类不识别builder方法 java: cannot find symbol symbol: method builder()因为lombok需要注释处理-当我打开intellij时,即使intellij也会显示消息:Do you want to enable lombok annotations?

有什么办法解决这个问题吗


共 (3) 个答案

  1. # 1 楼答案

    这个问题本身可能需要更多的上下文,但与此同时,查看lombok的IDEA设置可能会对您有所帮助。TLDR在IDEA上使用lombok时,您可以使用此扩展获得提示,而无需重建整个项目(因为在运行编译器时需要进行注释处理)

  2. # 2 楼答案

    从错误消息中,我得出结论:

    模块中存在一个(依赖关系)循环:

    • 域和
    • 服务

    不幸的是,错误消息并不建议您对这些周期进行椭圆化,而是(相当温和且以任务为中心)仅“将它们从预处理中排除”(lombok等人当然需要这一点)

    为了证明这一点(当你用谷歌搜索“java模块周期”时,你只会在顶部结果中点击这个问题,。。而“java模块周期是好是坏?”把我带到这里:

    Why are cyclic imports considered so evil? ),但我认为“循环模块”是一种“反模块模式”,只要你的“系统”很小且过于可视:打破这些循环&;避开他们


    因此,在您的情况下,我将避免从servicedomain的任何导入

    so depend only unidirectional! service -> domain ..., and not domain -> service!

    ,这将重新启用预处理&;龙目山

  3. # 3 楼答案

    好的,我在@xerx593用户的帮助下解决了这个问题

    它不起作用的主要原因是这部分错误: modules from cycle [domain,service]这意味着在我的项目中有一个模块周期

    我有三个模块:domainserviceui其中 service模块取决于domain模块和 ui模块取决于service 因此,结构如下:domain->service->ui

    ui模块中我的pom.xml应该实现service模块依赖关系

    我的service模块中的pom.xml应该实现domain模块依赖关系

    domain模块中的pom.xml不应实现任何uiservice依赖关系

    但是由于我的错误,我在domainpom中实现了service依赖。xml和模块周期存在问题dmoain->service->domain

    在我删除了domain模块中的这个service依赖项之后,一切都正常了