maven


1. 传统的开发项目的依赖方式

image-20220126163955471


2. 构建,依赖,打包工具

有一个工具可以帮我们做到项目的构建,项目的依赖管理,项目的打包,项目的测试,项目的部署等一些列自动化的操作的工具;

  • gradle
  • maven

3. Maven的介绍

  • Apche的顶级项目
  • 开源 免费
  • 项目构建,编译,打包,依赖管理,安装,部署的一个自动化工具
  • Maven 3.3+ require JDK 1.7
  • Maven也是java开发的,所以要想使用Maven必须先安装jdk

4. Maven的架构

image-20220126165124976

image-20220126165547771


5. 安装Maven客户端程序

apache-maven-3.5.2-bin.zip

把这个压缩包解压到任意盘的根目录即可;建议配置在E盘的根目录(我给大家的setting.jar里面配置的全部是E盘);

配置环境变量:

image-20220127102545696

image-20220127102600523

image-20220127102635436


6. 我们需要学习的Maven的功能

  • 构建项目
  • 编译项目
  • 打包项目
  • 依赖管理

7. 我们修改Maven的中央仓库的地址

大家一定要修改一下,不修改使用不了jar包,因为网速太慢;

首先我们要把本地仓库的地址改一下:

image-20220127103534718

image-20220127103556478

image-20220127103636076

image-20220127104016515

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

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

image-20220127105329371

image-20220127105435473


10. 使用Maven构建项目

image-20220127105746334

image-20220127110014032

image-20220127110623236


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来创建复合项目

  • 首先要创建父项目

    父项目是不编写源码的,一般使用管理子项目(模块)的

    image-20220127142702814

  • 创建子项目

    image-20220127142742434


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

image-20220127144810815

一般来说我们要遵循Maven的规范把模板给我们为创建的目录结构补全;

image-20220127144949866


17. Maven的生命周期

image-20220127145803800

默认Maven这几个声明周期都是以插件的形式完成的,默认使用的是自带的插件,当然我们也可以使用第三方的插件;

1
2
3
4
5
<build>
<plugins>
xxx
</plugins>
</build>

18. 父项目统一管理jar包版本

image-20220127150728289

image-20220127150749138


文章作者: Yang Shiyu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Yang Shiyu !
  目录