Maven 简介
Maven 简介
Apache Maven 是一个开源的 Java 项目构建和管理工具,由 Apache 软件基金会维护。它帮助开发者自动化构建、依赖管理、测试、打包、发布等整个项目生命周期。
一、Maven 是什么?
| 问题 | 回答 |
|---|---|
| Maven 是啥? | 一个项目管理工具,主要用于 Java 项目 |
| 核心功能? | 构建(Build) + 依赖管理(Dependency Management) |
| 核心文件? | pom.xml(Project Object Model) |
| 口号? | “约定优于配置”(Convention over Configuration) |
二、Maven 解决什么问题?
| 传统开发问题 | Maven 解决方案 |
|---|---|
| JAR 包到处找、手动导入 | 自动从中央仓库下载依赖 |
| 依赖版本冲突 | 传递性依赖 + 版本锁定 |
| 编译、打包、测试命令不统一 | 标准生命周期命令(如 mvn package) |
| 项目结构混乱 | 强制标准目录结构 |
| 团队协作构建不一致 | 统一 pom.xml 配置 |
三、Maven 的两大核心
1. POM(Project Object Model)
- 一个 XML 文件:
pom.xml - 定义项目信息、依赖、插件、构建方式
- 是 Maven 的灵魂
<groupId>com.example</groupId> <!-- 组织名 -->
<artifactId>my-app</artifactId> <!-- 项目名 -->
<version>1.0.0</version> <!-- 版本号 -->
<packaging>jar</packaging> <!-- 打包类型:jar/war/pom -->
这四个元素构成 GAV 坐标,唯一标识一个构件(artifact)
2. 构建生命周期(Build Lifecycle)
Maven 定义了 三套标准生命周期:
| 生命周期 | 主要阶段 |
|---|---|
| default | compile → test → package → install → deploy |
| clean | clean(删除 target 目录) |
| site | 生成项目文档站点 |
运行
mvn package会自动执行:validate → compile → test → package
四、Maven 的“约定优于配置”
| 目录 | 用途 |
|---|---|
src/main/java | 主 Java 代码 |
src/main/resources | 配置文件、properties、xml |
src/test/java | 单元测试代码 |
src/test/resources | 测试资源 |
target/ | 编译、打包输出(自动生成) |
你只需遵循结构,Maven 自动知道怎么做!
五、依赖管理(超级强大!)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.2</version>
</dependency>
Maven 自动完成:
- 下载
jackson-databind-2.17.2.jar - 下载它的传递性依赖(如 jackson-core)
- 放入
target/classes和本地仓库 - 提供类路径给编译/运行
六、本地仓库 & 中央仓库
| 仓库 | 说明 |
|---|---|
| 本地仓库 | 默认:~/.m2/repository/,缓存下载的 JAR |
| 中央仓库 | https://repo.maven.apache.org |
| 镜像仓库 | 推荐使用 阿里云镜像 加速 |
<!-- settings.xml 中配置阿里云镜像 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
七、Maven vs Ant vs Gradle
| 工具 | 特点 |
|---|---|
| Ant | 脚本式,灵活但配置繁琐 |
| Maven | 约定式,POM 驱动,依赖管理强 |
| Gradle | 脚本式(Groovy/Kotlin),更灵活,构建快 |
新手推荐 Maven:学习成本低、生态完善
八、Maven 常用命令(一行搞定!)
mvn compile # 编译
mvn test # 运行测试
mvn package # 打包成 JAR/WAR
mvn clean # 清理 target
mvn install # 安装到本地仓库
mvn dependency:tree # 查看依赖树
九、Maven 的优势总结
| 优势 | 说明 |
|---|---|
| 依赖自动管理 | 一行 <dependency> 搞定 |
| 统一构建方式 | 所有项目用相同命令 |
| 插件生态丰富 | 3000+ 插件(打包、报告、部署) |
| 多模块支持 | 大型项目分模块管理 |
| 与 IDE 深度集成 | IDEA、Eclipse 一键导入 |
十、一句话总结
Maven = POM + 生命周期 + 依赖管理 + 约定结构
下一步建议:
运行下面命令,10 秒创建一个标准 Maven 项目:
mvn archetype:generate -DgroupId=com.example -DartifactId=hello-maven \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
然后打开 pom.xml,你会发现一切都已准备好!
需要 Maven 安装步骤 或 IDEA 中使用 Maven?继续问我!