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

lombok与maven-lombok-plugin的区别是什么?能否互相替换?

Lombok 与 maven-lombok-plugin 差异及替换可行性解答

核心差异

两者属于完全不同类型的构件,功能定位没有重叠:

  • lombok是功能核心库,提供所有业务代码中用到的注解(如@Data、@Slf4j、@Builder等)以及编译期代码生成的核心逻辑,是项目使用Lombok功能的必需依赖,归属项目dependencies依赖树。
  • maven-lombok-plugin是Maven构建辅助插件,仅作用于Maven构建生命周期,作用是简化注解处理器配置,无需开发者手动在maven-compiler-plugin中声明Lombok的注解处理器路径,归属项目build/plugins配置段,不会进入项目依赖树。

能不能直接替换?

绝对不可以直接替换,两者不是同类构件,无法互相替代:

  • 把maven-lombok-plugin放到dependencies中,不会提供任何业务代码需要的Lombok注解,会直接报注解找不到的编译错误。
  • 把lombok放到build/plugins中,Maven无法识别其为有效插件,会直接报错构建失败。

正确的配置方案

如果你需要移除项目中的maven-lombok-plugin,不需要替换成其他构件,只要调整两处配置即可保证Lombok功能正常:

  1. 保留dependencies中的Lombok依赖,建议设置scope为provided,避免将其打入最终的应用包中:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>匹配你的项目使用的Lombok版本</version>
    <scope>provided</scope>
</dependency>
  1. 在maven-compiler-plugin的配置中显式声明Lombok的注解处理器路径,替代原有插件的作用:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1及以上稳定版本</version>
    <configuration>
        <annotationProcessorPaths>
            <path>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>和依赖中保持一致的版本号</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>

注意事项

  • 只要IDE端已经安装了Lombok支持插件,上述配置调整后,原有代码的所有Lombok功能完全不受影响
  • 如果你的项目同时使用了其他注解处理器(如MapStruct、JPA静态元模型生成器),可以将对应的路径一并添加到annotationProcessorPaths列表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:06:04