🌻🌻目录
- 一、maven项目的目录结构?---约定
- 二、在创建maven项目的时候
- 三、依赖
- 四、依赖的传递性
- 五、依赖的排除性
- 六、继承---项目结构的设计
- 七、聚合---项目的设计方式
一、maven项目的目录结构?—约定
Maven是自动化构建工具,如何实现自动化?
- 1、pom.xml是maven项目的标志,一个maven项目没有pom.xml文件那么就不是maven项目,类似于web.xml对于web项目的作用
- 2、Main中java文件夹用来存放项目中的除了测试程序以外的和项目有关的java源程序
- 3、Main中resources文件夹存放的是项目中的与项目有关的配置文件
- 4、main最后项目部署的时候源程序的字节码文件以及配置文件要部署的
- 5、Test中的java文件夹存放测试程序的,和项目没有关系
- 6、Test中的resources文件存放的与测试有关的配置文件,和项目没有关系
- 7、test中的内容不参与部署的
二、在创建maven项目的时候
- 1、组名—group id、项目名—artifact id、版本号—version
- 2、以上的三个统称maven的坐标
- 3、Maven中的坐标是用来唯一确定一个jar、war包在仓库中的位置
三、依赖
- 1、什么是依赖?所谓的依赖就是当前项目要使用到的其他方提供的jar包在maven的pom中进行设置,这个设置是依赖设置,如何设置?
<!-- 依赖的设置 -->
<dependencies>
<!-- 可以设置多个依赖 -->
<!-- 单元测试的依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
2、依赖的版本统一管理
<properties>
<!-- 自定义标签 -->
<spring-version>4.3.24.RELEASE</spring-version>
</properties>
<!-- 依赖的统一管理 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
四、依赖的传递性
1、当甲在使用乙的jar包的时候,由于乙的jar包对应的项目中使用到了丙的jar包,所以甲在使用乙的jar包的时候,同时会把丙的jar包一起依赖过来;从乙把丙的jar包传递到了甲
2、在依赖传递的过程中,可能存在版本的冲突问题
- 1)就近原则和声明原则
- 2)声明原则:是指在pom.xml中设置依赖的顺序,决定着有版本冲突的时候最终版本是哪一个;靠上的配置是最终的版本,如下例子:最终版本是05传递的版本
<!-- 依赖03项目和04项目 -->
<dependencies>
<!-- 当间接依赖出现版本冲突的时候,最后的版本是此处靠上的配置的 -->
<dependency>
<groupId>com.glory.zhi</groupId>
<artifactId>day10-maven-03</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.glory.zhi</groupId>
<artifactId>day10-maven-04</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
- 3)就近原则
直接依赖比间接依赖要近,所以最终版本是直接依赖的版本
<dependencies>
<dependency>
<groupId>com.glory.zhi</groupId>
<artifactId>day10-maven-03</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.glory.zhi</groupId>
<artifactId>day10-maven-04</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.23.RELEASE</version>
</dependency>
</dependencies>
五、依赖的排除性
1、从当前项目中将传递来的其他的依赖排除掉
排除前:
排除后(手动添加排除):
排除后(操作eclipse排除):
保存即可排除:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.23.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
六、继承—项目结构的设计
1、可以创建maven父工程/或者父项目,然后创建maven的子工程/子项目继承父工程
2、Maven的父项目必须是pom类型的
父项目的创建:
子项目的创建:
3、可以实现依赖的统一管理
第一种统一管理方式:此方式所有的子项目中用到的依赖都是相同的
父项目配置如下
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
第二种方式:不同的子项目中使用的依赖是不同的,父项目配置如下
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
子项目配置如下
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
</dependencies>
七、聚合—项目的设计方式
1、聚合是指将项目拆分成为多个模块,最后再由模块聚合到一起形成完整的项目
2、聚合项目必须是pom类型
聚合项目的创建:
父项目的创建
(1)
(2)
子项目的创建:
(1)
(2)
……
SSM项目整合