maven的作用?
是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。
依赖管理
方便快捷的管理项目依赖的资源(jar包),避免版本冲突问题
统一的项目结构
提供标准、统一的项目结构
项目构建
标准跨平台(Linux,windows,macos)的自动化项目构建方式 清理、编译、测试、打包、发布
3部分
pom.xml配置文件
仓库
本地仓库
自己计算机上的一个目录
中央仓库
有maven团队维护的全球唯一的
远程仓库
私服,一般有公司团队搭建的私有仓库
maven坐标
是资源唯一标识,通过该坐标可以唯一定位资源位置
使用坐标来定义项目或引入项目中需要的依赖
naven坐标主要组成
groupId:定义当前Maven项目隶属组织名称(通常是域名反写)
artifactId:定义当前Maven项目名称(通常是模块名称,例如order-service、goods-service)
version:定义当前项目版本号
依赖传递
依赖具有传递性
直接依赖:在当前项目中通过依赖配置建立依赖关系
间接依赖:被依赖的资源如何依赖其他资源,当前项目间接依赖其他资源
排除依赖
排除依赖指主动断开依赖的资源,被排除的资源无需指定版本
依赖范围
依赖的jar包,默认情况下,可以在任何地方使用。可以通过...设置其作用范围
作用范围:
主程序范围有效(main文件夹范围内)
测试程序范围有效。(test文件夹范围内)
是否参与打包运行。(package指令范围内)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1.0</version>
<scope>test</scope>
</dependency>
生命周期
Maven的生命周期就是为了对所有的maven项目构建过程进行抽象和统一
Maven中有3套相互独立的生命周期:
clean:清理工作
default:核心工作,如:编译、测试、打包、安装、部署等。
site:生成报告、发布站点等
生命周期阶段
clean:移除上一次构建生成的文件
compile:编译项目源代码
test:使用合适的单元测试框架运行测试(junit)
package:将编译后的文件打包,如jar、war等
install:安装项目到本地仓库
注意:在同一套生命周期中,当运行后面的阶段时,前面的阶段都会运行。