Maven是Java项目的自动化管家,核心做两件事:依赖管理(通过pom.xml声明坐标,自动下载及传递依赖)和构建管理(通过生命周期命令如mvn package标准化执行编译、测试、打包等流程)。

Maven 是 Java 项目中真正落地的“自动化管家”——它不写业务代码,但让写代码这件事更稳、更快、更可复现。核心就两件事:把依赖管清楚,把构建跑明白。不需要背命令,关键在理解逻辑和配置意图。
依赖管理:靠 pom.xml 声明,Maven 自动拉取
你不用去官网找 jar 包、解压、复制粘贴到 lib 目录。只要在 pom.xml 的 <dependencies> 里写清楚需要什么,Maven 就会自动下载该依赖及其所有传递依赖(比如引入 Spring Boot Web,它自动带入 Tomcat、Jackson、Spring MVC 等),并解决基础版本兼容问题。
- 每个依赖用
<groupId>、<artifactId>、<version>三要素唯一标识,例如:<dependency><br> <groupId>com.mysql</groupId><br> <artifactId>mysql-connector-j</artifactId><br> <version>8.4.0</version><br></dependency>
- 依赖默认从中央仓库下载,首次使用会缓存到本地仓库(如
~/.m2/repository),后续编译直接复用,无需重复下载 - 遇到版本冲突时,Maven 按“路径最短优先”和“声明顺序靠后优先”原则自动选版本;必要时可用
<exclusions>排除不需要的传递依赖
项目构建:一条命令触发标准化流程
Maven 把编译、测试、打包这些动作组织成有顺序的生命周期。你执行一个阶段,前面所有阶段自动完成。比如运行 mvn package,实际依次执行 validate → compile → test → package。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
clean:清空
target/目录,为干净构建做准备(对应mvn clean) -
compile:编译
src/main/java下源码,输出 class 到target/classes -
test:运行
src/test/java中的单元测试(需 JUnit 等依赖已声明) -
package:按
<packaging>类型(jar/war/pom)打包,生成文件放在target/下 - install:把打包产物安装进本地仓库,供本机其他 Maven 项目作为依赖引用
pom.xml 是项目的“总账本”,结构要清晰
它是整个 Maven 项目的核心配置文件,不只是列依赖,还定义项目身份、构建行为、插件扩展等。GAV(GroupId、ArtifactId、Version)是必填项,共同构成项目唯一坐标,就像身份证号一样不可重复。
立即学习“Java免费学习笔记(深入)”;
-
<groupId>通常体现组织或业务归属,如com.example.order -
<artifactId>是项目名,小写字母+短横线,如user-service -
<version>推荐语义化版本,如1.2.0或快照版1.2.0-SNAPSHOT -
<packaging>默认jar,Web 项目常用war,父模块用pom
本地仓库与 setting.xml 是可控的“后勤中心”
Maven 默认把下载的 jar 和构建产物存在用户目录下的 .m2/repository。这个位置可以改,避免 C 盘爆满或权限问题;同时,conf/setting.xml 可配置镜像仓库(如阿里云)、认证信息、代理等,直接影响依赖下载速度和成功率。
- 修改
localRepository节点,指定新路径,例如:<localRepository>E:\maven-repo</localRepository> - 国内开发建议配置阿里云镜像,在
<mirrors>中添加:<mirror><br> <id>aliyunmaven</id><br> <mirrorOf>central</mirrorOf><br> <name>Aliyun Maven</name><br> <url>https://maven.aliyun.com/repository/public</url><br></mirror>
- setting.xml 修改后,所有基于该 Maven 安装的项目都会生效,无需每个项目单独配置

















