先说一下创建子maven工程的步骤
继承
继承的作用
:在父工程中,统一管理项目中的依赖信息,进行统一的版本控制
继承的背景是:
对一个大型的项目进行了模块拆分,
一个project下,创建了很多的module,
每个module都需要配置自己的依赖信息,
通过,在父工程中,为整个项目维护依赖信息的组合,既保证了整个项目的使用规范、准确的jar包,又能够将以往的经验沉淀下来,节约时间。
继承的语法
:
父工程studytwo:
<?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>com.atguigu</groupId>
<artifactId>studytwo</artifactId>
<version>1.0-SNAPSHOT</version>
聚合:Maven聚合,是指将多个项目,组织到一个父项目中,通过触发父工程的构建,统一按顺序触发子工程构建的过程。
聚合的作用:
1、统一管理子项目构建,通过聚合,可以将多个子项目组织在一起,方便管理和维护
2、优化构建顺序,通过聚合,可以对多个项目进行顺序控制,避免出现构建依赖混乱导致构建失败的情况
另:
这是创建子maven工程后idea自动添加的,这里说明此工程下,有2个子工程:shop-user、shop-order。
这里的内容就是要统一管理的那些子工程的artifactId
<modules>
<module>shop-order</module>
<module>shop-user</module>
</modules>
当前工程作为父工程,他要管理子工程,所以打包方式必须是:pom
<packaging>pom</packaging>
导入依赖,在此处导入,所有的子工程都有相应的依赖
<dependencies></dependencies>
声明依赖,不会下载依赖,可以被子工程继承版本号
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
子工程shop-user:
<?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">
这是idea自动有的,parent标签就是来指定继承父工程的gav属性
<parent>
<artifactId>studytwo</artifactId>
<groupId>com.atguigu</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
g v 属性,也继承父工程,可以自定义
<artifactId>shop-user</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
</project>
子工程shop-order:
<?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">
<parent>
<artifactId>studytwo</artifactId>
<groupId>com.atguigu</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
g v 属性,也继承父工程,可以自定义
<artifactId>shop-order</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
</dependencies>
</project>