龙目岛应该在 spring-boot-依赖项中提供一个范围吗?



根据龙目岛项目文档,龙目岛依赖项应该是提供的范围(https://projectlombok.org/setup/maven(。该范围是否应该在 spring-boot-dependencies pom .xml 的<dependencyManagement>中定义?

spring-boot-dependencies pom.xml只是对可以很好地协同工作的库版本的描述。它们在依赖关系管理中定义。

如果你有一个 Spring Boot 应用程序并且想要使用 lombok,你必须在项目 pom 的"依赖"部分明确说明这一点,但你可以排除版本,因为这已经在 spring-boot-依赖关系中定义过。您还可以声明依赖项是"提供的"或更好的是"可选的"。

<scope>provided</scope>意味着编译需要该库和 测试类路径,但它是由某种容器提供的

<optional>true</optional>意味着编译需要库,但在运行时不需要


编辑:似乎Spring Boot maven插件总是打包您的依赖项,即使您将它们声明为可选或提供,至少当您将应用程序打包为jar时,我没有用战争来测试这一点。

原因是 jar 包含一个嵌入式 servlet 容器,Spring Boot 打包需要为这个容器提供提供的库,这是有道理的!(谢谢你@Peter维珀曼(。

我想结论是,在使用 Spring Boot maven 插件打包 jar 时,是否为 lombok 提供范围并不重要,因为库总是会被打包,除非您出于语义原因想使用该范围......

对于不包含在包中的龙目岛,您只需要使用排除配置配置 Spring Boot maven 插件即可。

<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>

最新更新