有人投票决定关闭问题,坚称这是基于意见的,但事实并非如此。
插件配置的存在(顺便说一句,乍一看这些配置的目的是为了修复maven插件的一些“小故障”,但是,其中一些配置不再需要了,例如:https://github.com/maven-plugin)。 com/JetBrains/kotlin/pull/1501)并不是以下之间的唯一区别:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
和
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在第一种情况下,maven 项目通过父子关系继承
dependencyManagement
,因此,由于 spring-boot
团队通过 properties
部分定义依赖项版本,子项目也可以通过 properties
部分覆盖依赖项版本,例如如果我们的目标是更改 spring-framework
的版本而不更改 spring-boot
的版本,我们可以定义如下内容:
<properties>
<spring-framework.version>6.0.15</spring-framework.version>
</properties>
这显然在第二个配置的情况下不起作用 - maven 只是从
independentBoM 导入
dependencyManagement
部分。
尚不清楚哪种方法“更灵活”(我们更愿意同时避开这两种方法),但是它们与依赖管理的角度也不同。