maven

什么是maven?
Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。

Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。
开源项目:https://www.apache.org/index.html#projects-list

Maven的作用?


介绍:
Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
作用:
方便的依赖管理
统一的项目结构
标准的项目构建流程
官网:http://maven.apache.org/


仓库:用于存储资源,管理各种jar包。
本地仓库:自己计算机上的一个目录。
中央仓库:由Maven团队维护的全球唯一的。 仓库地址:https://repo1.maven.org/maven2/
远程仓库(私服):一般由公司团队搭建的私有仓库。

安装步骤
先准备安装包

1.解压 apache-maven-3.6.1-bin.zip 。
2.配置本地仓库:修改 conf/settings.xml 中的 <localRepository> 为一个指定目录。
3.配置阿里云私服:修改 conf/settings.xml 中的 <mirrors>标签,为其添加如下子标签:
4.配置环境变量: MAVEN_HOME 为maven的解压目录,并将其bin目录加入PATH环境变量。
5.测试:打开cmd输入mvn -v

IDEA集成Maven
配置Maven环境(全局)
第一步:

第二步:

第三步:

maven home path: 填写自己下载好的maven的位置
user setting file :是用来配置去哪下载依赖的jar包的settings.xml文件
Local repository: 是下载的jar包存放的本地仓库路径
第四步:

第五步:


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



Maven坐标
什么是坐标?
Maven 中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置。
使用坐标来定义项目或引入项目中需要的依赖。
Maven 坐标主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.zhe)
artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
version:定义当前项目版本号

IDEA 导入 Maven 项目
打开IDEA,选择右侧Maven面板,点击 + 号,选中对应项目的pom.xml文件,双击即可。

依赖管理
依赖配置
依赖:指当前项目运行所需要的jar包,一个项目中可以引入多个依赖。
配置:
在 pom.xml 中编写 <dependencies> 标签
在 <dependencies> 标签中 使用 <dependency> 引入坐标
定义坐标的 groupId,artifactId,version
点击刷新按钮,引入最新加入的坐标

注意事项
如果引入的依赖,在本地仓库不存在,将会连接远程仓库/中央仓库,然后下载依赖。(这个过程会比较耗时,耐心等待)
如果不知道依赖的坐标信息,可以到 https://mvnrepository.com 中搜索

依赖传递
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

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

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



生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。

Maven中有3套相互独立的生命周期:
clean:清理工作。
default:核心工作,如:编译、测试、打包、安装、部署等。
site:生成报告、发布站点等。
每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

生命周期阶段
clean:移除上一次构建生成的文件
compile:编译项目源代码
test:使用合适的单元测试框架运行测试(junit)
package:将编译后的文件打包,如:jar、war等
install:安装项目到本地仓库

注意事项:
在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。

执行指定生命周期的两种方式:
在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。

在命令行中,通过命令执行。
mvn clean
mvn compile
mvn package
mvn test

小结
maven生命周期
clean:清理
compile:编译
test:测试
package:打包
install:安装