如果您访问官方Lombok Maven guide,则会看到其范围应为union
。
当我使用start.spring.io从头开始创建新项目并添加Lombok时,在生成的pom中仅得到provided
。
然后我像这样打包Spring boot应用程序,出于好奇,决定看看打包在jar中的内容:
MVN清洁包-DskipTests = true &&解压缩target / demo-0.0.1-SNAPSHOT.jar -d爆炸
Lombok已打包,无论我将范围设置为<optional>true</optional>
还是只有provided
都没关系。
如何防止Lombok包含在Spring Boot jar中?
我最后的想法是尝试使用Spring Boot插件附带的另一个目标:
mvn spring-boot:repackage
但不幸的是,它会产生以下错误:
重新打包失败:必须提供源文件
答案 0 :(得分:4)
如果要打包war文件,Lombok仅在lib提供的单独文件夹中可用,而不是通常的lib文件夹中可用。
要从最终的jar / war文件中完全排除龙目岛,您必须执行以下操作:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.1.RELEASE</version>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
有关更多详细信息,请参阅排除Spring Boot Maven插件https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/exclude-dependency.html的依赖项部分。
答案 1 :(得分:1)
看起来这是您的依赖项之一的传递性依赖项。如果确认,则知道该怎么办。