maven 父子工程创建详解
一、Maven工程继承关系
- 继承概念
maven继承是指的Maven的项目中,让一个项目从另外项目中继承配置信息的机制。继承可以让我们在多个项目中共享同一个配置信息,简化项目的管理和维护工作
- 继承作用:在父工程中统一管理项目中的依赖信息
- 背景
- 对一个比较大型的项目进行模块拆分
- 一个project 下面,创建很多module
- 流程
2.1创建一个新的maven工程
2.2 父工程里面我们不需要写代码所有删除src目录
2.3. 在父工程的pom.xml中写
<packaging>pom</packaging>
2.3.1 完整代码
<?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>org.atguigu</groupId>
<artifactId>day01-maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
2.4. 点击当前项目名—>右键---->new----->Module
2.5 对比父子工程pom.xml
2.5.1. 父工程 pom.xml
<?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>org.atguigu</groupId>
<artifactId>day01-maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 父工程多了此模块 -->
<modules>
<module>day01-maven-first-son</module>
</modules>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
2.5.2. 子工程pom.xml
<?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>
<!-- 子工程多了此模块 -->
<parent>
<groupId>org.atguigu</groupId>
<artifactId>day01-maven-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>day01-maven-first-son</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
- 分模块开发的好处
- 多个模块要使用同一个框架,他们应该是同一个版本,项目中使用的框架版本需要统一管理
- 使用框架是所需的jar 包组合(或者说依赖信息组合)需要经过长期摸索和反复调试,最终确定一个可用组合,这个耗费精力。通过在父工程中为整个项目维护依赖信息的组合即保证了整个项目使用规范吗,准确的jar包;方便管理,维护
- 父工程依赖统一管理
4.1父工程声明版本
<!-- 使用dependencyManagement标签配置对依赖的管理 -->
<!-- 被管理的依赖并没有真正被引入到工程 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>
</dependencyManagement>
4.2子工程引用版本
<!-- 子工程引用父工程中的依赖信息时,可以把版本号去掉。 -->
<!-- 把版本号去掉就表示子工程中这个依赖的版本由父工程决定。 -->
<!-- 具体来说是由父工程的dependencyManagement来决定。 -->
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencies>
方便本人学习