1. 传统的开发项目的依赖方式
![image-20220126163955471](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220126163955471.png)
2. 构建,依赖,打包工具
有一个工具可以帮我们做到项目的构建
,项目的依赖管理
,项目的打包
,项目的测试
,项目的部署
等一些列自动化的操作的工具;
3. Maven的介绍
- Apche的顶级项目
- 开源 免费
- 项目构建,编译,打包,依赖管理,安装,部署的一个自动化工具
- Maven 3.3+ require JDK 1.7
- Maven也是java开发的,所以要想使用Maven必须先安装jdk
4. Maven的架构
![image-20220126165124976](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220126165124976.png)
![image-20220126165547771](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220126165547771.png)
5. 安装Maven客户端程序
apache-maven-3.5.2-bin.zip
把这个压缩包解压到任意盘的根目录即可;建议配置在E盘的根目录(我给大家的setting.jar里面配置的全部是E盘);
配置环境变量:
![image-20220127102545696](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127102545696.png)
![image-20220127102600523](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127102600523.png)
![image-20220127102635436](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127102635436.png)
6. 我们需要学习的Maven的功能
7. 我们修改Maven的中央仓库的地址
大家一定要修改一下,不修改使用不了jar包,因为网速太慢;
首先我们要把本地仓库的地址改一下:
![image-20220127103534718](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127103534718.png)
![image-20220127103556478](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127103556478.png)
![image-20220127103636076](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127103636076.png)
![image-20220127104016515](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127104016515.png)
1 2 3 4 5 6
| <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
|
![image-20220127110327369](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127110327369.png)
1 2 3 4 5 6 7 8 9 10 11 12
| <profile> <id>development-jdk-1.8</id> <activation> <jdk>1.8</jdk> <activeByDefault>true</activeByDefault> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
|
8. 拷贝我给大家的常用的jar包(可选)
9. IDEA集成Maven客户端
![image-20220127105257748](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127105257748.png)
![image-20220127105329371](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127105329371.png)
![image-20220127105435473](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127105435473.png)
10. 使用Maven构建项目
![image-20220127105746334](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127105746334.png)
![image-20220127110014032](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127110014032.png)
![image-20220127110623236](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127110623236.png)
12. Maven的jar包作用域
1 2 3 4
| compile: 在编译时有效,也会参与测试与打包(一般的jar包都不用写,这是默认的选项) test: 只参与 编译,测试 不会参与打包 eg: junit provided:服务器已经提供了,不参与打包 eg: servlet jsp runtime: 只在运行时有效,不参与编译 eg: jdbc
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency>
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> <scope>runtime</scope> </dependency>
|
13. Maven来创建复合项目
14. Maven项目的依赖传递
父项目中的依赖默认会传递给子项目
maven中的依赖具有传递性
15. 解决依赖冲突
15.1 在父项目中阻止依赖传递
1
| <optional>true</optional>
|
false:默认值为false, 依赖进行往下传递
true: 阻止此依赖的传递
15.2 在子项目排除依赖(推荐使用)
在子项目中可以进行依赖的排除,可以排除从父项目中传递过来的模块(依赖)
1 2 3 4 5 6 7 8 9 10 11
| <dependency> <groupId>com.xzy</groupId> <artifactId>proB</artifactId> <version>1.0-SNAPSHOT</version> <exclusions> <exclusion> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </exclusion> </exclusions> </dependency>
|
16. 使用Maven提供的模板创建web项目(及其重要)
![image-20220127144654197](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127144654197.png)
![image-20220127144810815](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127144810815.png)
一般来说我们要遵循Maven的规范把模板给我们为创建的目录结构补全;
![image-20220127144949866](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127144949866.png)
17. Maven的生命周期
![image-20220127145803800](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127145803800.png)
默认Maven这几个声明周期都是以插件的形式完成的,默认使用的是自带的插件,当然我们也可以使用第三方的插件;
1 2 3 4 5
| <build> <plugins> xxx </plugins> </build>
|
18. 父项目统一管理jar包版本
![image-20220127150728289](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127150728289.png)
![image-20220127150749138](https://ysy-java.oss-cn-hangzhou.aliyuncs.com/image-20220127150749138.png)