我的项目的形式是:
|- 物料清单
|--- \ 孩子
我的 BOM 指定 sprint-boot-starter-parent 作为其父级(版本 3.1.12)。 Lombok 是此下的托管依赖项,如 https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent/3.1.12.
所示Lombok 只要位于子部分中就可以正常工作,但是当我删除它时,构建会失败并显示“未找到 lombok 包”(BOM 没有明确提及 lombok)。如果是spring-boot-starter-parent的一部分,不是应该默认继承使用吗?
此外,mvn dependency:tree 从子项中删除时不会显示 lombok,但它仍然显示在 mvn help: effective-pom 上。为什么lombok不被继承?
让我解释一下。
spring-boot-starter-parent
仅包含“dependencyManagement”标签内的一大块依赖项。该块不仅包含 lombok
,还包含 activemq
和 oracle
等等。这些依赖项永远不会在构建时加载。它们用于定义正确的工件及其版本,以便与特定的 Spring Boot 版本一起使用。
这就是为什么您需要在项目中添加
pom.xml
您实际需要作为库加载到构建中的所有依赖项(工件)。在此依赖项中,您可以省略版本标记 - 将使用父级中定义的版本标记。
对于实际的
lombok
依赖项,请将其放入您的 pom.xml
:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>