java
主页 > 软件编程 > java >

Maven特殊pom.xml配置文件-BOM解读

2025-06-01 | 佚名 | 点击:

特殊pom.xml配置文件 - BOM

仅用于集中管理项目依赖版本

在 Maven 中,BOM 用于定义一个项目的依赖版本的集合,通常用于管理一组共享的依赖版本。

这意味着你可以将一组依赖版本集中管理,避免在每个项目中单独定义每个依赖的版本,从而确保多个模块之间的版本一致性。

一、例子

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    

    <groupId>org.kaishu</groupId>

    <artifactId>kaishu-dependencies</artifactId>

    <version>${revision}</version>

    <packaging>pom</packaging>

 

    <properties>

        <revision>2.0.0-snapshot</revision>

        <java.version>1.8</java.version>

        <maven.compiler.source>${java.version}</maven.compiler.source>

        <maven.compiler.target>${java.version}</maven.compiler.target>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

 

    <!-- 只提供一个版本管理的基础,并不具体导入依赖。-->

    <dependencyManagement>

        <dependencies>

           <dependency>

               <groupId>org.springframework</groupId>

               <artifactId>spring-core</artifactId>

               <version>5.3.8</version>

           </dependency>

           <!-- 其他依赖 -->

        </dependencies>

    </dependencyManagement>

</project>

二、注意事项

1.特殊的子pom.xml文件

在项目中BOM的位置与一般子POM一致,并且你依然可将其当做子POM通过< module >元素引入到父POM中,具体是否引入,主要取决于你是否需要通过父项目一键构建所有模块。但是BOM文件不可继承父POM,即BOM文件中不可声明< parent >元素,避免因继承结构导致循环依赖,即报错:import form a cycle。

父POM中加入BOM依赖示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

 

    <groupId>org.kaishu</groupId>

    <artifactId>springboot-labs</artifactId>

    <version>${revision}</version>

    <packaging>pom</packaging>

    <modules>

        <module>kaishu-dependencies</module>

    </modules>

 

    <properties>

        <revision>2.0.0-snapshot</revision>

        <java.version>1.8</java.version>

        <maven.compiler.source>${java.version}</maven.compiler.source>

        <maven.compiler.target>${java.version}</maven.compiler.target>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

 

    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>org.kaishu</groupId>

                <artifactId>kaishu-dependencies</artifactId>

                <version>${revision}</version>

                <type>pom</type>

                <scope>import</scope>

            </dependency>

        </dependencies>

    </dependencyManagement>

 

</project>

2.dependencyManagement

dependencyManagement 元素只提供一个版本管理的基础,并不具体导入依赖。

可查看maven依赖树发现kaishu-dependencies模块和父模块springboot-labs下是没有对应依赖的,而其他模块则有具体的依赖。

3.packaging标签

对应值有pom、jar、war等

pom适用场景:

原文链接:
相关文章
最新更新