SpringBoot项目多模块项目中父类与子类pom.xml的关联详解
1:父类 POM 的配置
父 POM 通过
<modules>声明子模块,并通过<dependencyManagement>管理依赖版本。子 POM 通过
<parent>指定父 POM,继承父 POM 的配置。父子 POM 的连接方式是多模块项目的基础,能够有效管理依赖和配置,提高项目的可维护性。
父类 POM 是一个聚合工程(
packaging为pom),它通过<modules>标签声明子模块,并通过<dependencyManagement>管理依赖版本。<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>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <!-- 父项目必须是 pom 类型 --> <!-- 子模块声明 --> <modules> <module>module1</module> <module>module2</module> </modules> <!-- 依赖管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.6.13</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency> </dependencies> </dependencyManagement> <!-- 通用配置 --> <properties> <java.version>1.8</java.version> </properties> </project>
2:子类 POM 的配置
子类 POM 通过
<parent>标签指定父 POM 的坐标(groupId、artifactId、version),并继承父 POM 的配置。子模块可以添加自己的依赖和配置。<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> <!-- 指定父 POM --> <parent> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <relativePath>../pom.xml</relativePath> <!-- 父 POM 的相对路径 --> </parent> <!-- 子模块基本信息 --> <artifactId>module1</artifactId> <!-- 子模块的依赖 --> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> </project>
3:父子 POM 的连接方式
3.1 父 POM 声明子模块
在父 POM 中,使用 <modules> 标签声明子模块:
<modules>
<module>module1</module>
<module>module2</module>
</modules>
3.2 子 POM 指定父 POM
在子 POM 中,使用 <parent> 标签指定父 POM 的坐标:
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath> <!-- 父 POM 的相对路径 -->
</parent>
3.3 依赖继承
子模块可以继承父 POM 中 <dependencyManagement> 管理的依赖,无需指定版本号:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4:父子 POM 的工作机制
依赖管理:父 POM 通过
<dependencyManagement>管理依赖版本,子模块继承这些依赖。配置继承:父 POM 中的
<properties>、<build>等配置会被子模块继承。模块聚合:父 POM 通过
<modules>聚合子模块,构建时会按照顺序构建所有子模块。
5:注意事项
1:父 POM 的 packaging 必须为 pom
<packaging>pom</packaging>
2:子模块的 <parent> 必须正确指定父 POM 的坐标
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
3:子模块的 <artifactId> 必须唯一:
每个子模块的 artifactId 不能重复。
4:依赖版本管理:
子模块继承父 POM 的依赖版本,如果需要覆盖版本,可以在子模块中显式指定。
总结
-
父 POM 通过
<modules>声明子模块,并通过<dependencyManagement>管理依赖版本。 -
子 POM 通过
<parent>指定父 POM,继承父 POM 的配置。 -
父子 POM 的连接方式是多模块项目的基础,能够有效管理依赖和配置,提高项目的可维护性。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)