You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lombok配置@EqualsAndHashCode的flagUsage为WARNING无警告输出?

Lombok lombok.equalsAndHashCode.flagUsage 配置问题解答

配置文件不生效的路径原因

  • Lombok的lombok.config是编译期加载的配置,加载逻辑是从每个.java源文件所在目录开始,向上逐层遍历目录查找配置文件,不会读取编译后类路径下的资源文件。
  • 把配置放在src/main/resources目录时,Maven只会在资源打包阶段把文件复制到target/classes类路径下,这个路径不在Lombok编译期的扫描范围内,自然不会生效,你之前把配置放在src/main/java下能触发ERROR级别的校验,已经说明这个路径才是正确的配置存放位置。

不同flagUsage等级的实际行为

  • 配置值设为ERROR时:Lombok编译期扫描到@EqualsAndHashCode注解的使用,会直接抛出编译级错误,强制中断Maven构建流程,日志会精准定位到所有使用了该注解的源码位置,和你测试的表现完全一致。
  • 配置值设为WARNING时:Lombok确实会生成对应的告警标记,但这类自定义注解处理器生成的告警,不会被Maven默认的编译配置输出。Maven编译插件默认只输出Java编译器本身的核心告警,注解处理器生成的定制告警会被直接过滤,这就是你在编译、运行阶段都看不到告警信息的核心原因——不是Lombok没识别到注解使用,是告警被编译环节吞掉了。

让WARNING级别提示正常输出的配置方法

要在Maven编译阶段看到Lombok输出的@EqualsAndHashCode使用告警,需要给maven-compiler-plugin添加编译参数,放开注解处理器的告警输出,配置示例:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>17</source> <!-- 替换成你项目实际使用的JDK版本 -->
        <target>17</target>
        <compilerArgs>
            <arg>-Xlint:processing</arg>
        </compilerArgs>
        <showWarnings>true</showWarnings>
    </configuration>
</plugin>

如果是在IDE里运行/编译项目,需要同步修改IDE的Java编译器配置,开启注解处理器告警输出,才能在IDE的编译日志里看到对应提示。

内容的提问来源于stack exchange,提问作者Dominik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 13:00:53