当前位置: 代码网 > it编程>编程语言>Java > Maven特殊pom.xml配置文件-BOM解读

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

2025年06月01日 Java 我要评论
特殊pom.xml配置文件 - bom仅用于集中管理项目依赖版本在 maven 中,bom 用于定义一个项目的依赖版本的集合,通常用于管理一组共享的依赖版本。这意味着你可以将一组依赖版本集中管理,避免

特殊pom.xml配置文件 - bom

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

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

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

一、例子

<?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依赖示例如下:

<?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标签

对应值有pomjarwar

pom适用场景:

  • 父项目(用于管理子模块):如上述springboot-labs
  • 聚合器项目(只做模块聚合,不产生任何代码)
  • bom 文件(管理依赖版本):如上述kaishu-dependencies

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com