Maven是一款用于管理和构建Java项目的工具
Maven的作用:
- 依赖管理:方便快捷的管理项目依赖的jar包,避免版本冲突问题
- 统一项目结构:提供标准统一的项目结构
- 项目构建:标准跨平台的自动化项目构建方式
maven创建的工程目录
- src下存放的main和test
- main是实际代码资源
- java是Java源文件目录
- resources是配置文件目录
- test是测试项目资源
- pom.xml是项目配置文件
pom中存放了描述当前工程的信息
Maven坐标
Maven中的坐标是资源的唯一标识,通过该坐标可以唯一定位资源位置
使用坐标来定义项目或引入项目所需要的依赖
<groupId></groupId>存放的Maven创建的工程的包的名字
<artifactId></artifactId>存放的Maven创建的工程的名字
<version></version>当前项目的版本
这些叫做Maven的坐标
依赖管理
依赖配置
依赖:指当前项目运行所需要的jar包,一个项目可以引入多个依赖
配置:
- 在pom.xml中编写<dependencies>标签
- 在<dependencies>标签中,使用<dependency>引入坐标
- 定义坐标的groupId,artifactId,version
- 点击刷新按钮,引入最新加入的坐标
依赖传递
依赖具有传递性
A项目当中依赖了jar包资源和b项目,b项目当中依赖了c项目和jar包资源
即使在a项目中没有添加c项目中的依赖也会有c项目中的依赖,这就叫做依赖的传递
直接依赖:在当前项目中通过依赖配置建立的依赖关系,如a和b与另一个jar包
间接依赖:被依赖资源如果依赖其他资源,当前项目间接依赖其他资源
如b项目依赖其他jar包和c项目那么a项目也会间接依赖c项目和jar包
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
在直接依赖的依赖中添加exclusion标签包裹住不想要使用的间接依赖
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
依赖范围
依赖的jar包默认情况下,可以在任何地方使用,可以通过<scope></scope>设置其作用范围
scope默认是compile可以在主程序,测试程序,打包中使用
test可以在测试程序中使用
provided可以在主程序中和测试程序中使用
runtime可以在测试程序中和打包时使用
生命周期
Maven的生命周期就是为了对所有的Maven项目构建过程进行抽象和统一
Maven有三套相互独立的生命周期
- clean:清理工作
- default:编译,测试,打包,安装,部署
- site:生成站点,发布站点
每一套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段
主要的生命周期阶段
- clean:移除上一次构建生成的文件
- compile:编译项目源代码
- test:使用合适的单元测试框架运行测试
- package:将编译后的文件打包
- install:安装项目到本地仓库
在同一套生命周期当中,运行后面的阶段前面的阶段都要运行