🌟 一、一句话概括
Maven 是一个 Java 项目的自动化构建工具,它帮你:
- 快速创建标准项目结构(不用手动建文件夹)
- 自动下载依赖库(比如 JUnit、Spring 等)
- 编译、测试、打包代码(一条命令搞定)
- 统一管理项目配置(通过
pom.xml)它就像 Java 世界的"智能工厂",你只管写代码,剩下的交给 Maven。
🔧 二、前置条件:你需要什么?
✅ 必须:
- 会安装软件(比如 JDK、Maven)
- 已安装 Java JDK(因为 Maven 是用 Java 写的)
💡 提示:JDK ≠ JRE。你需要的是 Java Development Kit,不是普通运行环境。
📦 三、安装 Maven
- 下载 Maven(官网 apache.org)
- 解压到某个目录(如
C:\apache-maven-3.6.3) - 配置环境变量
MAVEN_HOME和PATH - 验证安装:
bash
mvn --version
✅ 输出示例:
Apache Maven 3.6.3
Java version: 1.8.0_232
OS name: "windows 10"
📌 意义:
- 证明 Maven 安装成功
- 显示你用的 Java 版本和操作系统
⚠️ 如果失败,请检查 Java 是否安装、环境变量是否正确。
🏗 四、创建一个 Maven 项目(自动生成骨架)
运行这条命令:
bash
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5 -DinteractiveMode=false
🔍 拆解命令参数:
| 参数 | 含义 |
|---|---|
archetype:generate |
使用 archetype 插件生成项目模板 |
-DgroupId |
公司/组织名(类似包名前缀) → com.mycompany.app |
-DartifactId |
项目名 → my-app |
-DarchetypeArtifactId |
使用哪个模板?这里是快速启动模板 |
-DinteractiveMode=false |
非交互模式(自动完成,不让你一步步选) |
📌 类比:
就像你开餐厅,Maven 帮你:
- 盖好房子(目录结构)
- 装好厨房(源码目录)
- 配好菜单(pom.xml)
- 不用你自己一砖一瓦去搭
🗂 五、生成的项目结构
执行后会生成一个目录:my-app
结构如下:
my-app/
├── pom.xml
└── src
├── main/java/.../App.java ← 主程序
└── test/java/.../AppTest.java ← 测试代码
✅ 关键文件说明:
| 文件 | 作用 |
|---|---|
pom.xml |
项目核心配置文件(Project Object Model) |
src/main/java/App.java |
主程序入口 |
src/test/java/AppTest.java |
单元测试代码 |
📄 六、pom.xml 是什么?------项目的"身份证+说明书"
这是 Maven 的核心配置文件,相当于项目的"大脑"。
xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.release>17</maven.compiler.release>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
🔍 核心字段解释:
| 字段 | 含义 |
|---|---|
groupId |
组织 ID(类似公司域名倒写) |
artifactId |
项目名 |
version |
版本号(SNAPSHOT 表示开发中) |
dependencies |
依赖的库(Maven 会自动下载) |
properties |
属性配置(如指定 Java 版本) |
💡 重点:
你不需要手动去网上找 JUnit 的 jar 包,只要在
pom.xml里声明依赖,Maven 就会自动下载并管理!
🛠 七、构建项目:mvn package
运行:
bash
mvn package
✅ 发生了什么?
Maven 会自动执行以下步骤(构建生命周期):
validate→ 检查项目是否正确compile→ 编译.java文件为.classtest→ 运行单元测试(JUnit)package→ 打包成 JAR 文件
最终生成:
target/my-app-1.0-SNAPSHOT.jar
✅ 构建成功提示:
[INFO] BUILD SUCCESS
▶️ 八、运行你的程序
bash
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
输出:
Hello World!
📌 解释:
-cp= classpath,告诉 Java 去哪里找类文件com.mycompany.app.App= 主类全名(包名 + 类名)
☕ 九、支持 Java 9+(重要!)
默认情况下,旧版 Maven 可能不支持 Java 9 及以上版本。
✅ 解决方法:
在 pom.xml 中添加:
xml
<properties>
<maven.compiler.release>11</maven.compiler.release>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
</plugin>
</plugins>
</pluginManagement>
</build>
📌 作用:
- 使用新版编译插件(3.8.1+)
- 设置目标 Java 版本为 11(可改为 8, 17, 21 等)
🔄 十、Maven 的"生命周期"Phase(核心概念)
Maven 不是随便执行命令,而是有一套标准流程 ,叫做 Build Lifecycle。
常见 Phase(阶段):
| 阶段 | 作用 |
|---|---|
validate |
验证项目结构 |
compile |
编译源码 |
test |
运行单元测试 |
package |
打包(JAR/WAR) |
verify |
检查包是否合规 |
install |
安装到本地仓库(供其他项目使用) |
deploy |
部署到远程仓库(如公司私服) |
📌 特点:
当你运行
mvn package,Maven 会自动执行之前所有阶段(validate → compile → test → package)
🧹 十一、其他常用命令
| 命令 | 作用 |
|---|---|
mvn clean |
删除 target/ 目录(清理旧构建) |
mvn test |
只运行测试 |
mvn compile |
只编译,不打包 |
mvn install |
打包 + 安装到本地仓库 |
mvn site |
生成项目文档网站 |
mvn dependency:copy-dependencies |
下载所有依赖到 target/dependency/ |
✅ 组合命令示例:
bash
mvn clean dependency:copy-dependencies package
清理 → 下载依赖 → 打包(一条龙服务)
📚 十二、site:生成项目文档
bash
mvn site
生成的文档在:
target/site/
包含:
- 项目信息
- 依赖列表
- 测试报告
- 代码质量分析(配合插件)
📌 适合团队协作、项目归档。
✅ 十三、总结:Maven 的核心价值
| 优势 | 说明 |
|---|---|
| 🏗 标准化项目结构 | 所有 Maven 项目长得一样,新人秒懂 |
| 📦 自动管理依赖 | 不用手动下载 jar 包,不怕版本冲突 |
| 🛠 一键构建 | 编译、测试、打包、部署,一条命令搞定 |
| 🧩 插件化架构 | 支持各种工具集成(Sonar、Docker 等) |
| 🌐 仓库机制 | 支持本地 + 远程(中央仓库、私服) |
🚫 十四、作者提醒:不要滥用 777?不,是不要乱设权限!
原文最后说:"Never set things to 777 unless you have a really good reason."
虽然这是在讲
chmod,但对 Maven 也有启示:
- 不要随意添加不必要的依赖
- 不要随便改
pom.xml的关键配置- 不要跳过测试直接打包上线
💬 最后一句话理解全文:
Maven 就像 Java 项目的"智能管家" :你只要告诉它"我要建一个项目"(
archetype:generate),再告诉它"需要哪些库"(pom.xml),最后说"打包吧"(mvn package),剩下的下载、编译、测试、打包全由它自动完成------从此告别手动配置的混乱时代。
🎯 现在你已经完成了"Maven 五分钟入门",接下来可以深入学习:
- 如何用 Maven 构建 Web 项目(
war包) - 如何集成 Spring Boot
- 如何发布到私有仓库
- 如何做持续集成(CI/CD)
Maven,是通往专业 Java 开发的第一步。🚀