如何为delombok代码添加@Generated注解,配置后不生效如何解决
你观察到的@Generated注解仅出现在编译后的class文件中、不输出到delombok生成的源码路径是预期行为,不属于Bug。
原因说明
Lombok的lombok.addLombokGeneratedAnnotation配置默认仅作用于编译期的字节码生成阶段,不会将该注解写入delombok输出的还原源码中,delombok默认只会还原业务代码对应的Lombok生成逻辑,不会附带编译期附加的注解类标记。
Jacoco覆盖率问题解决方案
方案1(推荐):直接基于字节码做覆盖率统计
Jacoco 0.8.0及以上版本原生支持识别字节码中Lombok生成的@Generated注解,会自动跳过所有带该注解的代码段,无需依赖delombok的源码。你只需确保Jacoco统计的target路径指向build/classes/java/main/即可,完全可以满足覆盖率排除Lombok生成代码的需求。
额外提醒:你描述中提到的@Genearated属于拼写错误,正确注解名为@Generated,注意排查相关配置里是否存在拼写失误。
方案2:强制delombok输出@Generated注解
如果你必须使用delombok生成的源码做覆盖率统计(比如需要源码级别的覆盖率结果展示),可以给delombok工具添加--format=generate运行参数:
- Gradle(使用io.freefair.lombok插件)配置示例:
delombok { format = 'generate' }
- Maven(使用lombok-maven-plugin)配置示例:
<plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> <version>${lombok.version}</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>delombok</goal> </goals> <configuration> <format>generate</format> </configuration> </execution> </executions> </plugin>
配置完成后重新执行delombok任务,生成的源码中就会带上@Generated注解。
内容的提问来源于stack exchange,提问作者Gopal S Akshintala
相关产品推荐
相关产品推荐

