


专栏:JavaEE 进阶跃迁营
个人主页:手握风云
目录
[一、Maven 的介绍](#一、Maven 的介绍)
[1.1. 什么是 Maven](#1.1. 什么是 Maven)
[1.2. 为什么需要学习 Maven](#1.2. 为什么需要学习 Maven)
[1.3. 创建一个 Maven 项目](#1.3. 创建一个 Maven 项目)
[二、Maven 的核心功能](#二、Maven 的核心功能)
[2.1. 项目构建](#2.1. 项目构建)
[2.2. 依赖管理](#2.2. 依赖管理)
[2.3. Maven Help 插件](#2.3. Maven Help 插件)
[三、Maven 仓库](#三、Maven 仓库)
[3.1. 本地仓库](#3.1. 本地仓库)
[3.2. 中央仓库](#3.2. 中央仓库)
[3.3. 私服](#3.3. 私服)
一、Maven 的介绍
1.1. 什么是 Maven
官方对于 Maven 的描述
Apache Maven is a build tool for Java projects. Using a project object model (POM), Maven manages a project's compilation, testing, and documentation.
翻译成中文:Apache Maven 是一款用于 Java 项目的构建工具。借助项目对象模型(POM),Maven 可管理项目的编译、测试和文档制作。
1.2. 为什么需要学习 Maven
学习 Maven 不是 "额外负担",而是掌握 Java 开发(尤其是 Spring、Spring Boot 等主流框架)的必备前提 ------ 文档后续创建 Spring Boot 项目时,正是基于 Maven 实现依赖引入(如 spring-boot-starter-web)和项目构建,若不理解 Maven,将无法排查 "依赖下载失败""Jar 包冲突" 等常见问题。
1.3. 创建一个 Maven 项目
这里以 IntelliJ IDEA 2022.1.4 为例,IDEA 本身已经集成了 Maven,直接使用,无需安装。

创建好之后,里面会有一个 pom.xml 文件,这是 maven 的配置文件,用于描述项目的各种信息。
XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Test11.4.1</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</project>
二、Maven 的核心功能
Maven 在项目开发中的作用主要体现在两个方面:项目构建和管理依赖。
2.1. 项目构建
在 Maven 的核心能力中,项目构建 是其最基础且关键的功能之一。它通过提供标准、跨平台(Linux/Windows/MacOS 等)的自动化构建流程,解决了传统手动构建项目(如编译、测试、打包、发布)中重复繁琐、易出错的问题,大幅提升开发效率。
传统开发中,代码修改后需反复执行 "编译→测试→打包→部署" 等步骤,且不同环境(如开发者本地、测试服务器)的操作可能存在差异。Maven 项目构建的核心目标是:将项目构建流程标准化、自动化,无论在何种环境,只需简单命令即可完成一致的构建操作。
Maven 定义了一套统一的项目构建生命周期(Lifecycle),每个生命周期包含一系列有序的 "阶段(Phase)",执行后续阶段时会自动触发前置阶段。我们在 IntelliJ IDEA 的右侧,点击 Maven,再点击 LifeStyle,就可以找到这些命令。

-
clean可以理解为 "大扫除",会把 Maven 之前构建项目时生成的各种临时文件、编译文件、打包文件等都清理掉,让项目回到 "干干净净" 的初始状态。
-
validate相当于 "初步检查",Maven 会帮你检查项目的配置、依赖是否有问题,确保项目具备正常构建的基本条件。
-
compile就是 "翻译代码",把你写的 Java 源代码(.java 文件)转换成计算机能识别的字节码文件(.class 文件)。
-
test类似于 "做试卷检查",会运行你写的测试代码(比如用 JUnit 写的测试),验证你的业务代码功能是否符合预期。
-
package好比 "打包快递",把编译好的代码、配置文件等资源打包成一个可分发的格式,比如常见的 jar 包(Java 项目)、war 包(Web 项目)。
-
verify是 "深度质检",在 package 之后再做一次全面检查,确保打包好的内容没有问题(比如测试是否全通过、配置是否合规等)。
-
install就像 "把特产放进自家储藏室",把打包好的包安装到你本地的 Maven 仓库里,方便你本地其他项目依赖它。
-
site可以理解为 "生成项目说明书网页",会创建一个包含项目信息、测试报告、依赖信息等内容的网站文档,方便别人了解你的项目。
-
deploy类似于 "把特产放到超市货架",把打包好的包发布到远程 Maven 仓库(比如公司私服、公共仓库),让其他人能从远程仓库获取并使用这个包。
2.2. 依赖管理
依赖(Dependency)指当前项目运行或编译所必需的外部资源,最常见的就是 Jar 包(如 MySQL 驱动、Spring 框架 Jar 包等)。
Maven 依赖管理的核心逻辑是:通过项目的配置文件 pom.xml 定义依赖的 "唯一坐标",Maven 会自动根据坐标从仓库中下载 Jar 包,并管理其依赖关系(如 A 依赖 B、B 依赖 C 的链式关系),无需手动复制 Jar 包到项目中。比如若项目需要 MySQL 驱动,需手动到官网下载 mysql-connector-java.jar,再复制到项目的 lib 文件夹;而用 Maven 只需在 pom.xml 中写几行配置,点击 "Load" 即可自动完成 Jar 包的下载与引入。
XML
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Test11.4.1</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
</project>

- 配置依赖坐标
Maven 通过 "坐标(GAV)" 唯一标识一个 Jar 包。坐标由 groupID、artifactId、version 组成,其作用类似 "快递地址",Maven 通过这三个信息精准定位仓库中的 Jar 包。
- 依赖传递
传统开发中,若项目 A 依赖 Jar 包 B,而 Jar 包 B 又依赖 Jar 包 C(即 A→B→C),则需手动下载 B 和 C 两个 Jar 包,否则会出现 "类缺失" 错误。Maven 支持 依赖传递:只需在 pom.xml 中配置 "直接依赖"(如 A 依赖 B),Maven 会自动分析 B 的依赖关系,将 "间接依赖"(如 C)一并下载并引入项目。
- 依赖排除
当项目中存在 "无用的间接依赖" 时(如 A 依赖 B,B 依赖 C,但 A 不需要 C),可通过 依赖排除 主动断开 C 的引入,避免 Jar 包冗余或版本冲突。
2.3. Maven Help 插件
当项目依赖关系复杂(如引入多个框架),手动分析冲突难度大,可借助 Maven Help 插件 可视化查看依赖树、定位冲突 Jar 包。
快捷键 ctrl + alt + s 打开设置,点击 plugins,搜索"Maven Helper",安装好之后,点击右下角的 Dependencies,再打开 pom 文件,就可以查看依赖关系了。


三、Maven 仓库
Maven 仓库是 Maven 管理依赖(jar 包、插件等资源)的核心组件,其本质是存储资源的目录(文件夹),通过统一的规则管理依赖的下载、缓存和复用,避免手动添加 jar 包的繁琐操作。
Maven 仓库分为本地仓库 和远程仓库两大类,远程仓库又细分为中央仓库、私服和其他公共库。
3.1. 本地仓库
本地仓库是开发者个人计算机上的目录,用于缓存从远程仓库下载的依赖,供本地所有 Maven 项目复用。在 IDEA 的设置里面,进入 Build, Execution, Deployment → Build Tools → Maven,在 Local repository 处可查看 / 修改本地仓库路径。
当项目引入依赖时,Maven 优先检查本地仓库:若本地仓库已存在该依赖,直接引用,无需下载;若本地仓库不存在该依赖,自动从远程仓库(中央仓库 / 私服)下载,并缓存到本地仓库。
3.2. 中央仓库
Maven 官方内置的远程仓库,由 Maven 团队维护,全球唯一,是所有 Maven 项目默认的依赖来源。
3.3. 私服
由企业 / 团队自行搭建的私有远程仓库,仅对内部成员开放(需权限验证)。
