Maven简介
Maven是专门用于管理和构建Java项目的工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。他的主要功能有:
-
提供了一套标准化的项目结构。所有IDE使用Maven构建的项目结构完全一样,在不同IDE上可以通用。
-
提供了一套标准化的构建流程(编译,测试,打包,发布……)
-
提供了一套依赖管理机制。依赖管理:管理项目所依赖的第三方资源(jar包、插件等)
Maven模型
Maven仓库
- 本地仓库(Local Repository):自己计算机上的一个目录
- 中央仓库(Central Repository):有Maven团队维护的全球唯一的仓库
- 私服仓库(Remote Repository):一般由公司团队搭建的私有仓库
当项目中使用功能坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:
- 如果有,则在项目中直接引用
- 如果没有,则去中央仓库下载到本地仓库
还可以搭建远程仓库,将来jar包的查找顺序则变为:本地仓库 → 远程仓库 → 中央仓库
Maven基本使用
Maven常用命令
- compile 编译:执行成功会生成target目录,存放了编译后的.class文件
- clean 清理:会删除已有的target目录
- test 测试:执行test目录下的java文件
- package 打包:在target目录下生成本项目的jar包
- install 安装:将jar包安装在本地仓库中
Maven生命周期
- Maven构建项目生命周期描述的是一次构建过程经历了多少个事件
- Maven对项目构建的生命周期划分为3套
- clean:清理工作
- default:核心工作,例如编译,测试,打包,安装等
- site:产生报告,发布站点等
注意:同一生命周期内,执行后边的命令,前边的所有命令会自动执行
Maven坐标详解
- 什么是坐标?
- Maven中的坐标是资源的唯一标志
- 使用坐标来定义项目或引入项目中需要的依赖
- Maven坐标主要组成
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如:order-service、goods-service)
- version:定义当前项目版本号
依赖范围
- 通过设置坐标的依赖范围(scope),可以设置对应jar包的作用范围:编译环境、测试环境、运行环境
- <scope>默认值:compile
依赖范围 | 编译classpath | 测试classpath | 运行classpath | 例子 |
---|---|---|---|---|
compile | Y | Y | Y | logback |
test | - | Y | - | Junit |
provided | Y | Y | - | servlet-api |
runtime | - | Y | Y | JDBC驱动 |
system | Y | Y | - | 存储在本地的jar包 |
import |