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
下是没有对应依赖的,而其他模块则有具体的依赖。
3.packaging标签
对应值有pom
、jar
、war
等
pom适用场景:
- 父项目(用于管理子模块):如上述
springboot-labs
- 聚合器项目(只做模块聚合,不产生任何代码)
- BOM 文件(管理依赖版本):如上述
kaishu-dependencies
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论