目录
基本介绍
概述:Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型 (POM)。
作用:
- 项目构建:提供标准的,跨平台的自动化构建项目的方式
- 依赖管理:方便快捷的管理项目依赖的资源 (jar包),避免资源间的版本冲突等问题
- 统一开发结构:提供标准的,统一的项目开发结构
概念模型:
- 项目对象模型 (Project Object Model)。POM对象模型。每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式
- 依赖管理系统 (基础核心),maven通过坐标对项目工程所依赖的jar包统一规范管理
- maven定义一套项目生命周期。清理、初始化、编译、测试、报告、打包、部署、站点生成
- 一组标准集合。maven工程有自己标准的工程目录结构、定义坐标有标准
- maven管理项目生命周期过程都是基于插件完成的,例如:开发中使用的tomcat插件
图示:

使用前提
安装
maven的官网:http://maven.apache.org/。
官方下载地址:http://maven.apache.org/download.cgi。
maven是一个绿色软件,解压即安装。
目录结构:
各目录结构说明:
- bin:可执行程序目录
- boot:maven自身的启动加载器
- conf:maven配置文件的存放目录
- lib:maven运行所需库的存放目录
环境配置
说明:maven的运行需要java的环境,需要我们配置`JAVA_HOME`环境变量。
步骤:
1. `我的电脑`-------->`属性`--------->`高级系统设置`---------->`新建系统变量MAVEN_HOME`。(系统变量值就是maven软件的根目录)
2. 环境变量配置好之后需要测试环境配置结果,我们需要在DOS命令窗口下输入以下命令查看输出。
如果能够看到输出的maven的版本信息代表配置成功。
相关概念
仓库
概述:用于存储资源,主要是各种jar包。
分类:
本地仓库:开发者电脑上存储资源的仓库,也可从远程仓库获取资源。
中央仓库:maven团队自身维护的仓库,属于开源的。
私服:各公司/部门等小范围内存储资源的仓库,私服也可以从中央仓库获取资源。
私服的作用:
- 保存具有版权的资源,包含购买或自主研发的jar
- 一定范围内共享资源,能做到仅对内不对外开放
仓库配置:在全局进行配置,在maven的配置文件`conf/settings.xml`中可以找到它的说明。在我们前面查看这个文件的时候大家会发现它提供了一个标签`<localRepository>/path/to/local/repo</localRepository>`,这个标签中配置的值就是我们本地仓库的位置。
坐标
概述:maven中的坐标用于描述仓库中资源的位置。
主要组成:
- groupId:定义当前资源隶属组织名称(通常是域名反写,如:org.mybatis;com.itheima)
- artifactId:定义当前资源的名称(通常是项目或模块名称,如:crm,sms)
- version:定义当前资源的版本号
- packaging:定义资源的打包方式,取值一般有如下三种:
- jar:该资源打成jar包,默认是jar
- war:该资源打成war包
- pom:该资源是一个父资源(表明使用maven分模块管理),打包时只生成一个pom.xml不生成jar或其他包结构
如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询,<https://mvnrepository.com/>,在该网站中可直接搜索想要的资源,然后就能得到该资源的坐标,输入资源名称进行检索。
作用:使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由机器完成。
搭建maven项目
| 1. 在IDEA中配置Maven | ![]() |
![]() | |
| 2. 创建maven工程 | ![]() |
| 3. 填写本项目的坐标 | ![]() |
| 4. 查看各目录颜色标记是否正确 | ![]() |
| 5. IDEA右侧有一个maven管理界面 可点开查看 | ![]() |
依赖管理
概述:依赖是指在当前项目中运行所需的jar。
依赖配置格式:

传递依赖:
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,则表明当前项目间接依赖其他资源
- 注意:直接依赖和间接依赖其实也是一个相对关系

传递依赖的冲突问题:
三种优先法则
- 路径优先:当依赖中出现相同资源时,层级越深,优先级越低,反之则越高
- 声明优先:当资源在相同层级被依赖时 配置顺序靠前的覆盖靠后的
- 特殊优先:当同级配置了相同资源的不同版本时,后配置的覆盖先配置的

依赖范围:
通过`scope`标签设定其作用范围。
- 主程序范围有效(src/main目录范围内)
- 测试程序范围内有效(src/test目录范围内)
- 是否参与打包(package指令范围内)
`scope`标签的取值有四种:

生命周期
概述:maven的构建生命周期描述的是一次构建过程经历了多少个事件。
基本流程:
![]()
插件
概述:执行生命周期中的相关事件。
特点:
- 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件
- maven默认在各个生命周期上都绑定了预先设定的插件来完成相应功能
- 插件还可以完成一些自定义功能
配置方式:

Maven是一个强大的项目管理工具,通过POM模型管理项目依赖,提供标准化的项目结构和生命周期。它包括本地和远程仓库,用于存储资源,依赖管理解决版本冲突。Maven的生命周期包括清理、编译、测试等阶段,插件用于执行特定任务。搭建Maven项目时,需配置环境变量,并通过坐标定位资源。












2848





