maven lombok编译问题

项目开发中本地遇到了一个maven编译lombok出错的问题,排查过程记录一下。

1.项目中引入公司其他微服务api jar包后出现maven编译错误,错误提示如下:

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project xxx: Compilation failure -> [Help 1]

此错误提示只显示Compilation failure,无任何提示信息;

2.开始排查原因,尝试了使用mvn -e和-X参数分别对错误堆栈和DEBUG模式分析,但错误原因仍然只显示Compilation failure;

3.由于出错的模块除了引入微服务api jar包外还因为项目内部的调整引入了一些其他jar包,所以将变动的jar包一个一个移除重复编译,发现出错jar包为微服务api jar包;

4.打开maven依赖分析该jar包除了自身外,还引入了包含hibernate的validator,apache commons-lang,lombok等开源jar包,此时想到lombok作为动态字节码实现的代码增强类jar包,可能是编译时找不到对应的get set方法导致报错,所以移除该jar包编译后成功。

5.但有问题的是,测试环境编译可以通过,但本机不行,思考后觉得可能是maven编译插件与lombok版本不兼容问题,尝试升级maven-complier插件版本,错误依旧;

6.想到本地maven版本较高,尝试升级lombok jar包版本,错误解决;这也证明了测试环境为何可以正常编译:测试环境的maven版本较低,与低版本的lombok版本可以兼容;

问题总结:

1.lombok作为使用注解为开发者在编译期自动生成get,set,log,data等重复代码时有优势,且可以提高代码可读性,但不建议对外提供的jar包引入,避免引入方不习惯使用而导致的各种环境不兼容浪费时间排查问题,除非lombok已成为公司标准;自己项目内部使用无可厚非;

2.遇到maven与lombok结合编译出现问题,除了上述的情形及解决方法,还有如下几种情形及解决方法

2.1:如使用idea作为IDE,可配置idea settings中的Annotation Processors–>Enable annotation processing解决可能出现的编译错误;

2.2:idea安装lombok插件;

    原文作者:6300先生
    原文地址: https://www.jianshu.com/p/1f3c3fd7c2a1
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞