开发者

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

目录
  • 特殊pom.XML配置文件 - BOM
    • 一、例子
    • 二、注意事项
      • 1.特殊的子pom.xml文件
      • 2.dependencyManagement
      • 3.packaging标签
  • 总结

    特殊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>http://www.devze.com;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.apachejs.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>$javascript{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>
            http://www.devze.com        <version>${revision}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    </project>

    2.dependencyManagement

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

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

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

    3.packaging标签

    对应值有pomjarwar

    pom适用场景:

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

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜