1.什么是maven?
Maven是apache旗下的一个开源项目,用来管理和构建java项目的工具。
2.maven的作用
(1).依赖管理:
方便管理项目以来的资源(jar包),避免版本冲突问题
(2).统一项目结构:
提供标准、统一的项目结构
(3).项目构建:
支持跨平台(Linux、Windows、MacOS)的自动化项目构建方式。
maven的命令在多个平台都可以使用
3.依赖管理
(1).依赖配置
(2). 依赖传递
依赖具有传递性
直接依赖:绿色
间接依赖:黄色
图中:
A项目有一个jar包和一个B项目为直接依赖
jar包又间接依赖了jar包,B项目又间接依赖了一个jar包和一个C项目,C项目依赖了一个jar包
如果:
A项目只想依赖B项目,不需要B项目依赖的资源,此时用到了maven中的"排除依赖"
排除依赖:
主动断开依赖的资源,被排除的资源不需要指定版本,通过exclusion排除依赖,可以排除多个依赖
(3).依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过<scope>...</scope>设置作用范围
(4). 生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一。
Maven有3套相互独立的生命周期:
- clean:清理工作。
- default:核心工作、如:编译、测试、打包、安装、部署等。
- site:生成报告、发布站点等。
每套生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。
1、clean周期
主要用于清理上一次构建产生的文件,可以理解为删除target目录。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
命令:mvn clean
2、default周期
主要阶段包括:
1)process-resources:默认处理src/main/resources/下的文件,将其输出到对应的classpath目录中。
2)compile:编译src/main/java下的java文件,产生对应的class。
3)process-test-resources:默认处理src/test/resources/下的文件,将其输出到对应的classpath目录中。
4)test-compile:编译src/test/java下的java文件,产生对应的class。
5)test:运行测试用例。
6)package:打包构件,即生成对应的jar包、war包等。
7)install:将构件部署到本地仓库。
8)deploy:部署构件到远程仓库。
命令:
mvn install
mvn package
mvn clean package #调用clean生命周期的clean阶段和default生命周期的package阶段
3、site周期
主要阶段包括:
1)site:产生项目的站点文档。
2)site-deploy:将项目的站点文档部署到服务器。
命令:
mvn site
执行指定生命周期有两种方式:
在idea中,右侧的maven工具栏,选中对应的生命周期,双击执行。
在命令行中,通过命令执行。