Spring Boot使用Lombok时为何需配置排除及安装IDEA插件?
Lombomb 使用疑问解答
我在项目中使用Lombok,已在POM.xml中添加如下Lombok依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
但有两个疑问:
a) 为何必须在<build>标签下添加排除配置?这个配置的作用是什么?
对应的build配置代码:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build>
解答:
Lombok本质是编译期工具——它只在代码编译阶段生效,帮你自动生成getter/setter、构造方法这些代码,一旦编译完成生成class文件,Lombok本身就没用了。
你已经把依赖设为<optional>true</optional>,意思是这个依赖仅当前项目编译时需要,下游依赖你的项目不会自动继承这个依赖。但Spring Boot的maven插件打包时,默认会把项目依赖的jar包都打进最终的可执行jar里,如果不手动排除Lombok,它会被一起打包进去,既浪费jar包体积,又属于完全不必要的运行时依赖。
添加这个排除配置,就是明确告诉Spring Boot打包插件:别把Lombok的jar包放进最终的可执行jar里,因为运行时根本用不上。
b) 为何需要在IntelliJ IDEA中安装Lombok插件?
解答:
IDEA默认不认识Lombok的注解——比如你加了@Data注解,Lombok会在编译时自动生成getter/setter,但IDEA的代码检查器不知道这一点,它会扫描你写的源码,发现你调用obj.getXXX()但源码里没写这个方法,就会标红报错,还会影响代码提示。
安装Lombok插件后,IDEA就能识别所有Lombok注解,知道这些方法是编译时自动生成的,不会再报错,同时还能在代码中显示生成方法的提示,让你写代码时更顺畅,比如自动补全生成的getter方法。
内容的提问来源于stack exchange,提问作者TestUser
相关产品推荐
相关产品推荐

