一脚踩进java——Maven中项目之间的关系
一、Maven项目目录结构(jar类型)
1.1 截图
1.2 src/main/java 真实目录的快捷目录,写java代码
1.3 src/main/resources快捷目录
1)存放配置文件
2)虽然看见resources目录,但是所有配置文件最终被编辑放到class类路径
1.4 src/test/java 写测试java代码
1.5 src/test/resources 写测试配置文件
1.6 pom.xml maven的配置文件
1)当前项目所依赖的其它 项目 或 jar 或 插件 等
二、Maven之间的关系
2.1 依赖关系
1)标签<dependency>把一个项目的jar包引入到当前项目
2)自动下载另一个项目所依赖的其它项目
2.2 继承关系
1)父项目是pom类型
2)子项目是jar或war,如果子项目还是其它项目父项目,子项目也是pom类型
3)有继承关系后,子项目出现<parent>标签
①如果子项目的<groupId>和<version>标签与父项目相同,子项目可以不用配
<parent> <groupId>com.hq</groupId> <artifactId>maven-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.hq</groupId> <artifactId>maven-child</artifactId> <version>0.0.1-SNAPSHOT</version>
4)父项目pom文件中看不到包含了哪些子项目,在逻辑上有父子项目关系
2.3 聚合关系
1)前提也是继承,父项目会把子项目包含在父项目中
2)子项目的类型必须是Maven Module,而不是Maven Project
3)新建聚合项目的子项目时,点击父项目右键 Maven Module
4)具有聚合关系的父项目,在pom.xml中<modules>
<groupId>com.hq</groupId> <artifactId>maven-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>maven-child1</module> </modules>
5)具有聚合关系的子项目,在pom.xml中<parent>
<parent> <groupId>com.hq</groupId> <artifactId>maven-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>maven-child1</artifactId>
2.4 聚合项目和继承项目的区别
1)语义上聚合项目父项目和子项目关系性较强
2)语义上单纯继承项目父项目和子项目关系性较弱
2.5 <dependencyManagement>写在父项目
1)作用:声明可能使用到的所有的jar
2)子项目中只需要坐标的<groupId>和<artifactId>,<version>继承父项目
3)在父项目中<properties>把所有版本号进行统一管理
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.2.5.RELEASE</version> </dependency> </dependencies> </dependencyManagement>
2.6 父项目pom.xml
1)<properties>子标签自定义
2)${名字}引用标签的值
<properties> <sping-core>5.2.5.RELEASE</sping-core> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${sping-core}</version> </dependency> </dependencies> </dependencyManagement>