[Maven 基础课程]Maven 是什么
Maven 的官方网站:https://maven.apache.org/
来自 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 能够管理项目的编译、测试以及文档编制工作。
目前 Maven 是 Java 中最主流的构建工具,Gradle 现在也非常火,SpringBoot 现在使用 Gradle 编译项目,但是 Gradle 比较复杂,没有 Maven 普及率广,可以说 Maven 对于 Java 程序员来说是必学的。
一句话总结:Maven 就像是 Java 项目的“管家”,它帮你把项目从源码一步步变成可运行的软件。
为什么需要 Maven
想象一下,你正在开发一个 Java 项目。这个项目需要用到很多其他库(比如处理 JSON 的 Gson 库、网络请求的 HttpClient 库),并且你还需要:
- 编译你的源代码(
.java
文件)。 - 将编译好的类文件(
.class
文件)打包成 JAR 或 WAR 文件。 - 运行单元测试来确保代码没有问题。
- 生成项目文档和报告。
在没有 Maven 之前,开发者需要手动去下载各种 JAR 包,然后放到项目的 lib
文件夹下。如果依赖的库又依赖其他库(传递依赖),就会变得非常麻烦。
Maven 的出现解决了这些痛点:
- 自动下载依赖,不再手动复制 JAR 包
- 清晰的项目结构,统一的目录规范
- 标准化的构建流程,团队协作更方便
- 提供丰富的插件支持,比如单元测试、文档生成、打包部署等
Maven 的核心功能
依赖管理(Dependency Management)
这是 Maven 最强大的功能之一。你只需要在项目的 pom.xml
文件中声明你需要的依赖(比如 Gson),Maven 就会:
- 自动从中心仓库下载这些依赖,并缓存到你的本地仓库。
- 自动处理依赖的依赖(也叫传递性依赖)。例如,如果你依赖
A
,而A
又依赖B
和C
,Maven 会自动为你下载B
和C
。
有了 Maven,你再也不需要手动管理一堆 JAR 包了,这大大简化了项目配置和管理。
标准化项目结构
Maven 规定了一个标准的项目目录结构。例如:
your-project/
├── src/
│ ├── main/
│ │ ├── java/ # 存放你的源代码
│ │ └── resources/ # 存放配置文件、图片等资源文件
│ └── test/
│ ├── java/ # 存放你的测试代码
│ └── resources/ # 存放测试用到的资源文件
└── pom.xml # 项目对象模型文件
这种结构让不同团队成员在接手新项目时能快速上手,因为它遵循了统一的约定。
标准化的构建生命周期
Maven 定义了一套标准的构建生命周期,它包括一系列阶段(phase),比如:
validate
: 验证项目是否正确。compile
: 编译源代码。test
: 运行单元测试。package
: 将编译好的代码打包(通常是 JAR 或 WAR)。install
: 将包安装到本地仓库,供其他本地项目使用。deploy
: 将包部署到远程仓库。
你可以通过简单的命令,如 mvn clean install
,来执行整个生命周期,而不需要关心每个阶段的底层细节。