我知道Lombok是什么,它通过使用一些注释来最小化样板代码。Lombok通过使用Java内部构件在编译时生成等价的Java代码[Ref]。因此,在编译期间不需要任何显式的插件或Maven/Gradle构建阶段。
在查看Spring Boot项目的pom.xml时,我看到了下面的插件部分,我想知道这个排除是关于什么的。
<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是一个注释处理器,使用/由Lombok生成的代码不再依赖于Lombok。在Maven术语中,这意味着对Lombok的依赖应该具有provided
作用域(为了不将Lombok jar包含到目标工件中)。不幸的是,Spring开发人员对scope=provided
的依赖性有另一种看法。请检查下面的对话:Maven需要为托管依赖指定插件版本spring-boot-configuration-processor
,您的配置显式地删除Lombok jar从目标工件。