Appearance
Maven parent 与 import 的区别
1. parent
在 maven 配置文件 pom.xml 中可以引入 <parent> 如:
XML
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.17</version>
</parent>1
2
3
4
5
2
3
4
5
Note:例子中是
spring-boot-starter-parent-2.7.17.pom中的部分片段。
这是 maven 中继承关系的写法,表示该 maven 项目(spring-boot-starter-parent)将会继承目标项目(spring-boot-dependencies)中的依赖,通过这种方式可以实现依赖的复用。
这种复用可以针对两种依赖:
一种是定义在
<dependencies>中的<dependency>,这种是无条件继承的;还有一种是定义在
<dependencyManagement>中的<dependencies>,如要在子类中使用则需手动声明,声明时只需要指定groupId和artifactId就行,不用指定版本;
使用 parent 一可以实现复用,二还可以统一管理依赖的版本。
Note:这是从父 pom 继承的元素列表。
2. import
import 能实现与 parent 类似的功能,不过它能实现类似多继承的效果。
import 只能作用于 <dependencyManagement> 元素,它所实现的就是能将目标中的配置导入当前 pom 中。需要注意的是 import 不包括插件管理或父 POM 的构建元素。
XML
<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>1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Note:关于 scope:import 的官方示例说明参考这里。