如何防止lombok被打包成Spring Boot jar?
How to prevent lombok from being packaged into Spring Boot jar?
如果你访问官方 Lombok Maven guide,你会看到它的范围应该是 provided
。
当我使用 start.spring.io 从头开始创建一个新项目并添加 Lombok 时,它只会在结果 pom.xml 中得到 <optional>true</optional>
。
然后我像这样打包 Spring 引导应用程序,出于好奇决定查看 jar 中打包的内容:
mvn clean package -DskipTests=true && unzip target/demo-0.0.1-SNAPSHOT.jar -d exploded
Lombok 已打包,无论我将范围设置为 provided
还是只有 optional=true
.
都无所谓
如何防止 Lombok 被包含到 Spring Boot jar 中?
我最后的想法是尝试 Spring 引导插件附带的另一个目标:
mvn spring-boot:repackage
但不幸的是它产生了以下错误:
repackage failed: Source file must be provided
看起来它是您的一个依赖项的传递依赖项。如果你确认了,你就知道该怎么做了。
如果您打包 war 文件,Lombok 将仅在 lib 提供的单独文件夹中可用,而不是通常的 lib 文件夹中。
为了从最终的 jar/war 文件中完全排除 lombok,您必须这样做:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.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/2.3.x/maven-plugin/reference/html/#repackage-example-exclude-dependency 的排除依赖部分。
如果你访问官方 Lombok Maven guide,你会看到它的范围应该是 provided
。
当我使用 start.spring.io 从头开始创建一个新项目并添加 Lombok 时,它只会在结果 pom.xml 中得到 <optional>true</optional>
。
然后我像这样打包 Spring 引导应用程序,出于好奇决定查看 jar 中打包的内容:
mvn clean package -DskipTests=true && unzip target/demo-0.0.1-SNAPSHOT.jar -d exploded
Lombok 已打包,无论我将范围设置为 provided
还是只有 optional=true
.
如何防止 Lombok 被包含到 Spring Boot jar 中?
我最后的想法是尝试 Spring 引导插件附带的另一个目标:
mvn spring-boot:repackage
但不幸的是它产生了以下错误:
repackage failed: Source file must be provided
看起来它是您的一个依赖项的传递依赖项。如果你确认了,你就知道该怎么做了。
如果您打包 war 文件,Lombok 将仅在 lib 提供的单独文件夹中可用,而不是通常的 lib 文件夹中。
为了从最终的 jar/war 文件中完全排除 lombok,您必须这样做:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.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/2.3.x/maven-plugin/reference/html/#repackage-example-exclude-dependency 的排除依赖部分。