1 Maven简介
2 Maven基础概念
2.1 仓库
2.2 坐标
3 依赖的相关知识点
4 生命周期与插件
5 使用Inteli idea完成第一个Maven项目
1 Maven简介
Maven的本质就是一个项目管理工具,用于将项目开发和管理过程抽象成一个项目对象模型(project object model POM)
Maven的作用:
- 项目构建:提供标准的、跨平台的自动化项目构建方式
- 依赖管理:方便便捷的管理项目以来的资源(jar包),避免资源之间的版本冲突问题
- 统一开发结构:提供了标准统一的项目结构,如下图:
Maven的下载安装与配置:只需五步学会Maven的下载安装【图文详解】_扎哇太枣糕的博客-CSDN博客
2 Maven基础概念
2.1 仓库
仓库用于存储资源,主要是各种jar包
从上图可知,仓库可被分为两种:本地仓库和远程仓库
- 本地仓库:自己电脑上用于存储资源的仓库,可连接远程仓库来获取资源
- 远程仓库:非本机上的仓库,为本地仓库提供资源
- 私服:一定范围内存储资源的仓库,既可以从中央仓库中获取资源,也可以将各种途径获取到的不开源jar包存储在私服里
- 中央仓库:由Maven的官方团队来维护,存储所有的资源,且里面的资源都是开源的
2.2 坐标
坐标就是Maven中用于描述仓库中资源的位置
Maven坐标的主要组成
- groupId:当前Maven项目隶属组织的名称,通常是域名的反写(如org.mybatis)
- artifactId:当前maven项目名称,通常是模块名(如hadoop-client)
- version:项目版本号
- packing:定义项目的打包方式(jar或者war等)
如何使用坐标导入依赖:从Maven中央仓库网站下载jar包的两种方式,将会伴随java后端开发者的整个职业生涯_扎哇太枣糕的博客-CSDN博客
3 依赖的相关知识点
依赖的配置:
依赖配置就是在pom.xml文件中导入相关依赖,借以定位到具体的jar包。所有的依赖全都在pom.xml文件下面的<dependencies>标签进行管理,使用<dependency>对每个jar包进行定位, 一个项目可以设置多个依赖,使用多个<dependency>标签进行定位。
依赖的传递:
依赖传递就是两个模块之间进行调用,被调用模块的依赖会被传递给调用模块,调用模块的pom.xml文件里需把被调用模块当成是一个依赖进行导入
依赖传递时的冲突问题:
当调用模块的依赖版本与被调用模块的版本发生冲突时,遵循以下原则:
- 路径优先:不同模块的不同层级,层级浅的依赖覆盖层级深的
- 声明优先:不同模块的相同层级冲突,先配置的覆盖后配置
- 后覆盖前:同一个模块内,后配置的覆盖前面的
依赖传递时标签里的设置:
隐藏依赖(被调用模块的行为)
<optional>true</optional>
设置之后,调用模块就看不见被调用模块里面使用过这个依赖了
排除依赖( 调用模块的行为)
<exclusions><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion>
</exclusions>
设置之后,调用模块里将不再使用被调用模块的这个依赖
4 生命周期与插件
生命周期就是一个完整的Maven项目需要经历所有的阶段,就像是生命一样无法跳过一个阶段去执行下一个阶段,主要有以下三套生命周期:
插件就是要与生命周期的某个阶段相绑定,在执行到相应生命周期时会去实行相绑定的插件的功能。
Maven官网中给出的所有插件:https://maven.apache.org/plugins/index.html
插件目录结构(以打jar包插件为例)
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><goals><goal>jar</goal></goals><phase>generate-test-resources</phase></execution></executions></plugin></plugins>
</build>
5 使用Inteli idea完成第一个Maven项目
参考博客:2021 使用IDEA创建并编写你的第一个Maven项目【图文详解】_扎哇太枣糕的博客-CSDN博客