<modules>
声明子模块,并通过 <dependencyManagement>
管理依赖版本。<parent>
指定父 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>
子类 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>
在父 POM 中,使用 <modules>
标签声明子模块:
<modules> <module>module1</module> <module>module2</module> </modules>
在子 POM 中,使用 <parent>
标签指定父 POM 的坐标:
<parent> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <relativePath>../pom.xml</relativePath> <!-- 父 POM 的相对路径 --> </parent>
子模块可以继承父 POM 中 <dependencyManagement>
管理的依赖,无需指定版本号:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
<dependencyManagement>
管理依赖版本,子模块继承这些依赖。<properties>
、<build>
等配置会被子模块继承。<modules>
聚合子模块,构建时会按照顺序构建所有子模块。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 的连接方式是多模块项目的基础,能够有效管理依赖和配置,提高项目的可维护性。