一、概念
Maven 是 apache 旗下的一个开源项目,是一款用于管理和构建java项目的工具。
二、作用
- 依赖管理: 动态管理jar包,避免版本冲突。
- 统一项目结构: 提供标准、统一的项目结构。
- 项目构建: 标准跨平台的自动化项目构建方式。
Maven创建的项目结构
三、使用
(一)官方网站: https://maven.apache.org/
(二)Maven库: https://mvnrepository.com/
(三)Maven构建项目图
其中,仓库分为本地仓库,中央仓库,远程仓库三种
- 本地仓库: 存储在本机上的maven目录
- 中央仓库: 由Maven团队维护的全球唯一的。仓库地址:https://repo1.maven.org/maven2/
- 远程仓库: 一般是由公司团队搭建的私有仓库。
(四)安装使用
1、解压apache-maven-3.6.1-bin.zip。
2、配置本地仓库:修改 conf/setting.xml 中的 为一个指定目录。
<localResponsitory>maven压缩位置\mvn_repo</localResponsitory>
3、配置阿里云镜像:修改conf/setting.xml 中的 <mirrors> 标签,为其添加子标签。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
4、配置环境变量:MAVEN_HOME 为maven的解压目录,将bin目录加入PATH环境变量。
四、IDEA集成Maven
(一)配置Maven环境(局部)
- 1、选择IDEA菜单File - Setting - Build, Excution, Deployment - Build Tools - Maven
- 2、设置IDEA使用本地安装的Maven,并修改配置文件及本地仓库路径
3、查看JRE版本以及字节码版本是否为当前版本
(二)全局配置Maven环境
Maven坐标的组成: gourpId+artifactId+version - gourpId:定义当前Maven项目隶属组织名称(通常为域名反写,例如com.baidu)
- artifactId:定义当前Maven项目名称(通常是模块名,例如order-service、goods-service)
- version:当前项目版本号
(三)导入Maven项目
注意:一定是导入pom.xml文件,而不是整个文件。
五、依赖配置
(一)依赖: 指当前项目运行所需要的jar包,一个项目可以引入多个依赖。
(二)配置:
- 1、在pom.xml编写 <dependencies> 标签
- 2、在<dependencies> 标签内 使用 <dependency> 引入坐标
- 3、定义坐标的groupId,artifactId,version
- 4、刷新Maven,引入最新坐标
<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>test</scope>
</dependency>
</dependencies>
当没有刷新时引用新依赖图
刷新后引用新依赖图
六、依赖传递
(一)概念: 依赖传递指的是当前依赖引用的某个依赖中含有多个其它依赖时,则另外未在当前依赖声明的依赖也被加载。(父依赖没有这个插件,子依赖怎么会有呢?)
(二)排除依赖: 主动断开依赖资源,被排除的资源无需指定版本。(在本人看来,排除依赖非常的麻烦,因为需要知晓子依赖有什么依赖,并且还要根据需要排除依赖)使用 <exclusions>-<exculusion>进行排除。
七、依赖范围
(一)依赖的范围: 依赖默认范围为main,即主程序有效,通过 <scope>…<scope> 设置范围。
范围 | 说明 | 范例 |
---|---|---|
compile | 任意程序中都有效(默认) | log4j |
test | 测试程序有效 | junit |
provided | 主程序和测试程序有效 | servlet-api |
runtime | 运行程序和打包程序有效 | jdbc驱动 |
八、依赖的生命周期
(一)概念: 依赖的生命周期是为了对所有的Maven项目构建过程进行抽象和统一。
(二)相互独立的生命周期
生命周期 | 说明 |
---|---|
clean | 清理工作 |
default | 核心工作。例如:编译、测试、打包、安装、部署等 |
site | 生成报告、发布站点等 |
(三)重要生命周期阶段(执行顺序排列)
- clean周期
- clean阶段: 移出上次构建生成的文件(例如字节码文件等等)
- default周期
- complile阶段: 编译项目源代码
- test阶段: 使用合适的单元测试框架进行测试(Junit)
- package阶段: 将编译后的文件打包。例如jar、war
- install阶段: 安装项目到本地仓库
(四)执行生命周期
- 方法一:IDEA集成了依赖的生命周期,所以可以直接打开Maven-Lifecycle-选择生命周期。
- 方法二:命令行:输入命令 【mvn complie】