第3章 Maven项目聚合

在后续的开发中,我们会将项目拆分成多个子项目,这多个子项目共同协作完成一个大的整体项目,此时就必须统一这所有子项目的依赖版本。Maven父项目就是用来统一管理所有子项目的依赖版本的

3.1 创建Maven父项目

步骤1:

第3章 Maven项目聚合​_apache

步骤2:

第3章 Maven项目聚合​_apache_02

步骤3:

第3章 Maven项目聚合​_maven_03

步骤4:删除父项目的src目录,父项目只负责管理依赖,不负责编码

第3章 Maven项目聚合​_maven_04

步骤5:修改父项目的pom.xml

第3章 Maven项目聚合​_apache_05

注意,在dependencyManagement元素中配置的依赖,仅仅是为了指定依赖的版本,并不会去下载任何依赖的

3.2 创建子项目

创建子项目:mars-user

第3章 Maven项目聚合​_xml_06

mars-user的pom.xml,注意mysql依赖并没有指定版本,版本由父项目决定

<?xml versinotallow="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:schemaLocatinotallow="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<parent>

<artifactId>mars-parent</artifactId>

<groupId>com.gao</groupId>

<version>1.0-SNAPSHOT</version>

</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>mars-user</artifactId>

<properties>

<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

</properties>

<dependencies>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

</dependencies>

</project>

创建子项目:mars-car,注意mysql依赖并没有指定版本,版本由父项目决定

第3章 Maven项目聚合​_maven_07

mars-car的pom.xml

<?xml versinotallow="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:schemaLocatinotallow="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<parent>

<artifactId>mars-parent</artifactId>

<groupId>com.gao</groupId>

<version>1.0-SNAPSHOT</version>

</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>mars-car</artifactId>

<properties>

<maven.compiler.source>8</maven.compiler.source>

<maven.compiler.target>8</maven.compiler.target>

</properties>

<dependencies>

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

</dependency>

</dependencies>

</project>

第3章 Maven项目聚合​_apache_08

3.3 子项目依赖版本优先

如果子项目自己指定了依赖的版本,则优先使用子项目自己执行的版本