
在Maven聚合项目中,若ROOT仅作为聚合(aggregation)而非父模块(parent),直接在其pom.xml中声明无效;但合理使用并配合BOM导入机制,仍可统一管理子模块依赖版本。
在maven聚合项目中,若root仅作为聚合(aggregation)而非父模块(parent),直接在其pom.xml中声明`
在Maven中,“聚合”(
但
✅ 正确做法如下:
-
在ROOT的pom.xml中定义
(不写 :) <project><modelversion>4.0.0</modelversion><groupid>com.example</groupid><artifactid>ROOT</artifactid><version>1.0.0</version><packaging>pom</packaging></project>
发布ROOT为BOM(需执行mvn clean deploy),确保其坐标(groupId:artifactId:version)可被其他模块解析。
-
在子模块A或B的pom.xml中,通过import方式复用该BOM:
<project><modelversion>4.0.0</modelversion><parent><!-- 注意:此处仍可保留自己的parent(如spring-boot-starter-parent) --></parent><artifactid>A</artifactid></project>
⚠️ 注意事项:
- import作用域只能在
内使用 ,且必须配合pom ; - 若子模块已有
,BOM导入可与其共存(Maven会合并所有dependencyManagement); - 避免在聚合POM中声明普通
——既无意义,又易引发IDE误提示或构建混淆; - 推荐将ROOT的
命名含-bom后缀(如example-platform-bom),增强语义可读性。
总结:聚合POM本身不参与继承链,但作为BOM发布后,是解耦依赖版本管理与模块结构的理想载体。这种模式被Spring Boot、Quarkus等主流框架广泛采用,兼顾灵活性与可维护性。








