如何在Maven中使用BOM依赖?代码举例讲解

在Maven中使用BOM(Bill of Materials)依赖的主要步骤是:

  1. 在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不会下载该依赖,只会读取其版本信息。

  1. 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> 
  1. 在项目中添加子依赖,无需指定版本号:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
</dependency>

Maven会使用BOM中定义的版本号解析这些依赖。

  1. 子依赖也可以单独指定版本号,这种情况下会使用子依赖自己定义的版本号。

BOM的主要作用是:

  1. 统一管理项目所需依赖的版本号。
  2. 简化pom.xml,无需为每个子依赖指定版本号。
  3. 避免版本号冲突,子依赖会默认使用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中的版本号解析这些依赖。