Maven是什么
Maven 的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM)
POM (ProjectObject Model): 项目对象模型
Maven的作用
项目构建:提供标准的、跨平台的自动化项目构建方式
依赖管理:方便快捷的管理项目依赖的资源 (ar包),避免资源间的版本冲突问题
统一开发结构:提供标准的、统一的项目结构
Maven下载
下载地址: http://maven.apache.org/download.cgi
Maven安装
Maven属于绿色版软件,解压即安装
Maven环境变量配置
依赖Java,需要配置JAVA_HOME
设置MAVEN自身的运行环境,需要配置MAVEN_HOME
测试环境配置结果
MVN
Maven基础概念
仓库
用于存储资源,包含各种jar包
仓库:用于存储资源,包含各种iar包
仓库分类:
本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源
远程仓库:非本机电脑上的仓库,为本地仓库提供资源
中央仓库:Maven团队维护,存储所有资源的仓库
私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
私服的作用:
保存具有版权的资源,包含购买或自主研发的iar
中央仓库中的iar都是开源的,不能存储具有版权的资源
一定范围内共享资源,仅对内部开放,不对外共享
配置Maven环境(当前工程)
选择IDEA中 File --> Settings --> Build,Execution,Deployment --> Build Tools --> Maven设置IDEA
使用本地安装的 Maven,并修改配置文件及本地仓库路径
配置Maven环境(全局)

IDEA 创建 Maven 项目
1.创建模块,选择Maven,点击Next
2.填写模块名称,坐标信息,点击finish,创建完成
3.编写 HelloWorld,并运行


坐标
什么是坐标?
Maven中的坐标用于描述仓库中资源的位置
https://repo1.maven.org/maven2
Maven坐标主要组成
groupld:定义当前Maven项目隶属组织名称(通常是域名反写,例如:orgmybatis)
artifactld:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)
version:定义当前项目版本号
找坐标

Maven坐标的作用
使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交由机器完成
坐标的组成:组织ID 项目ID 版本号
Maven启动后,会自动保存下载的资源到本地仓库
默认位置
XML
<localRepository>${user.home)/.m2/repository</localRepository>
当前目录位置为登录用户名所在目录下的.m2文件夹中
自定义位置
XML
<localRepository>D:\studyApp\Maven\maven-repository</localRepository>
IDEA 导入 Maven 项目
**方式一:**打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可

如果没有看到

推荐将导入项目放同级目录

粘贴

**方式二:**打开IDEA,选择右侧Maven面板,点击+号,选中对应项目的pom.xml文件,双击即可

Maven项目构建命令
Maven构建命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔
mvn compile #编译
clean mvn #清理
test mvn #测试
mvn package #打包
mvn install #安装到本地仓库
依赖配置
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖
配置:
1.在 pom.xml 中编写**<dependencies>** 标签
2.在**<dependencies>** 标签中 使用**<dependency>**引入坐标
3.定义坐标的groupld,artifactld,version
4.点击刷新按钮,引入最新加入的坐标
XML
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
注意事项
如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程
比较耗时,耐心等待)
如果不知道依赖的坐标信息,可以到https://mvnrepository.com/中搜索
依赖传递
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本

依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过 <scope>...</ scope > 设置其作用范围作用范围:
主程序范围有效。 (main文件夹范围内)
测试程序范围有效。 (test文件夹范围内)
是否参与打包运行。(package指令范围内)

示例:
仅在单元测试中有效
生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
Maven中有3套相互独立的生命周期
clean:清理工作。
default: 核心工作,如: 编译、测试、打包、安装、部署等
site:生成报告、发布站点等。
每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段


注意事项
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行
执行指定生命周期的两种方式
在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。

在命令行中,通过命令执行。

如果想跳过某一阶段 只执行后面的操作:

代表跳过测试阶段
