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

Maven编译时无额外插件Lombok如何为Java类添加代码?

关于Maven编译阶段Lombok代码注入的问题解答

问题1:编译生成的class文件是否包含Lombok生成的样板代码?

答案是肯定的。执行mvn clean compile后生成的class文件中,已经完整包含了Lombok基于对应注解(如@Data/@NoArgsConstructor等)生成的所有样板代码,你可以通过javap命令反编译class文件直接验证。且这些生成的代码是标准字节码,运行时不需要依赖Lombok即可正常执行。

问题2:未配置Maven编译插件,代码注入逻辑是如何实现的?

这个机制依托JDK内置的标准能力实现,不需要额外引入Maven插件:

  • Lombok本身是符合**JSR 269(可插拔注解处理API)**规范的注解处理器,该规范是JDK 1.6及以上版本内置在javac编译流程中的原生能力,不需要第三方插件支持。
  • 当你引入scope为provided的Lombok依赖后,Maven默认的maven-compiler-plugin调用javac执行编译时,会自动扫描当前编译classpath下所有实现了JSR 269规范的注解处理器,自动加载并执行Lombok的处理逻辑。
  • 具体编译阶段的执行流程如下:
    1. javac首先解析输入的Java源文件,生成初始抽象语法树(AST)
    2. 调用所有已加载的注解处理器,Lombok的处理器会在这一步识别自己对应的注解,动态修改AST结构,插入样板代码对应的语法节点
    3. 所有注解处理器执行完成后,javac基于修改完成的AST生成最终的class字节码
  • Lombok依赖的scope设置为provided,正是因为它仅参与编译阶段的流程,运行时不需要任何Lombok的代码,所以不会被打包到最终的产物中,不会额外增加应用体积。

补充提示:如果你在maven-compiler-plugin的配置中手动指定了<annotationProcessorPaths>参数,javac的默认classpath扫描注解处理器逻辑会失效,此时你需要主动将Lombok加入到<annotationProcessorPaths>列表中才能正常生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:57:05