Spring Boot中pom.xml自动排除Lombok?传递依赖版本管控咨询
Lombok相关Maven配置疑问解答
问题描述
- 我手动给项目添加了Lombok依赖,没碰过spring-boot-maven-plugin的配置,但pom.xml里自动出现了这段排除配置:
<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>
想问这是不是添加Lombok后自动生成的?
- 如果要修改传递依赖(比如snakeyaml)的版本,应该用
配置排除后重新引入,还是通过properties配置覆盖版本,比如下面这种写法:
<properties> <snakeyaml.version>1.33</snakeyaml.version> </properties>
问题解答
关于Lombok自动生成排除配置的问题
没错,这个排除配置是Spring Boot的依赖管理机制自动加上的。Lombok属于编译期专属依赖——它只在代码编译阶段帮你生成getter、setter、构造方法这些代码,项目运行的时候根本不需要它。Spring Boot的Maven插件能自动识别这类依赖,自动添加排除配置,避免把没用的依赖打包到最终JAR里,减少包体积。
关于传递依赖版本修改的方式选择
优先用properties配置覆盖版本,理由如下:
- 这是Spring Boot官方推荐的标准做法,Spring Boot的依赖管理体系已经为绝大多数常用依赖定义了对应的版本属性(比如
snakeyaml.version),直接修改properties就能统一管控版本,从根源避免版本冲突。 - 用
再手动引入依赖的方式太繁琐:如果多个依赖都间接引用了snakeyaml,你得挨个排除,还得自己维护引入的版本号,远不如properties一键覆盖高效。 - 只有两种情况适合用
+手动引入:一是该依赖没有对应的Spring Boot版本属性;二是你需要完全替换依赖实现(比如换不同groupId的同类库)。
内容的提问来源于stack exchange,提问作者user21099360
相关产品推荐
相关产品推荐

