在Maven中使用BOM(Bill of Materials)依赖的主要步骤是:
- 在pom.xml中添加BOM依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
<scope>import</scope>
</dependency>
注意scope必须设置为import,这表示Maven不会下载该依赖,只会读取其版本信息。
- BOM依赖会在其dependencyManagement元素中管理子依赖的版本信息:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.6.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
- 在项目中添加子依赖,无需指定版本号:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
Maven会使用BOM中定义的版本号解析这些依赖。
- 子依赖也可以单独指定版本号,这种情况下会使用子依赖自己定义的版本号。
BOM的主要作用是:
- 统一管理项目所需依赖的版本号。
- 简化pom.xml,无需为每个子依赖指定版本号。
- 避免版本号冲突,子依赖会默认使用BOM中指定的版本号。
来看一个简单示例:
在pom.xml中添加spring-boot-starter-web的BOM依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.3.RELEASE</version>
<scope>import</scope>
</dependency>
添加spring-web和spring-core依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
Maven会使用spring-boot-starter-web BOM中的版本号解析这些依赖。