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
相关产品推荐
相关产品推荐

