Maven 是 Java 项目里的“项目管理和构建工具”。你可以把它类比成 Rust 里的 Cargo

Rust Java
Cargo Maven
Cargo.toml pom.xml
cargo build mvn package / mvn compile
crates.io Maven 中央仓库
自动下载依赖 自动下载依赖

1. Maven 主要解决什么问题?

在 Java Web 课程实验里,你通常会遇到这些问题:

  1. 项目需要很多第三方库
    比如 Spring、MyBatis、JDBC、Servlet、JSON 解析库等。
  2. 手动下载 jar 包很麻烦
    以前 Java 项目要自己去网上找 .jar 文件,然后手动导入,非常容易版本冲突。
  3. 项目编译、测试、打包流程复杂
    一个 Web 项目可能要编译 Java 文件、处理资源文件、运行测试、打成 .war.jar 包。

Maven 就是用来统一管理这些事情的。


2. Maven 最核心的文件:pom.xml

Maven 项目里最重要的是 pom.xml 文件。

pom 全称是:

Project Object Model,项目对象模型

你可以简单理解为:

pom.xml 是 Maven 项目的配置文件,告诉 Maven:这个项目叫什么、用什么依赖、怎么编译、怎么打包。

例如:

<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencies>

这段的意思是:

我的项目需要 MySQL 的 Java 驱动,请 Maven 自动帮我下载。

你不需要自己去找 jar 包,Maven 会从远程仓库下载到本地。


3. Maven 的依赖管理

假设你的 Java Web 项目要连接 MySQL,如果不用 Maven,你可能要自己下载:

mysql-connector-java.jar

然后手动导入 IDEA 或项目里。

用了 Maven 后,只要在 pom.xml 写:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.3.0</version>
</dependency>

Maven 会自动:

  1. 找到这个库;
  2. 下载到本地;
  3. 加入项目;
  4. 如果这个库还依赖别的库,也一起下载。

这就是 Maven 很重要的功能:依赖管理


4. Maven 的仓库机制

Maven 下载依赖时,会涉及三个概念:

远程仓库

最常见的是 Maven Central,也就是 Maven 的官方中央仓库。

你写了一个依赖,Maven 会去远程仓库找。

本地仓库

Maven 下载下来的 jar 包会存在你电脑本地,一般在:

C:\Users\你的用户名\.m2\repository

Linux/macOS 通常是:

~/.m2/repository

以后别的项目再用同一个依赖,就不用重新下载了。

私服仓库

公司里可能会搭建自己的 Maven 仓库,用来保存公司内部的 jar 包。

课程实验一般不需要你管这个。


5. Maven 的项目结构

一个标准 Maven 项目通常长这样:

project-name
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com/example/...
    │   └── resources
    │       └── application.properties
    └── test
        └── java
            └── com/example/...

重点记住:

src/main/java        放 Java 源代码
src/main/resources   放配置文件
src/test/java        放测试代码
pom.xml              Maven 配置文件

如果是 Java Web 项目,可能还有:

src/main/webapp

里面放 JSP、HTML、CSS、JS、WEB-INF 等内容。


6. Maven 常用命令

你在课程实验里常见的命令有这些:

mvn compile

编译项目。

mvn test

运行测试。

mvn package

打包项目,生成 .jar.war 文件。

mvn clean

清理编译产物,也就是删除 target 目录。

mvn clean package

先清理,再打包。这是很常用的命令。


7. Maven 的生命周期

Maven 把构建过程分成很多阶段,例如:

clean → compile → test → package → install → deploy
阶段 作用
clean 清理旧的编译结果
compile 编译代码
test 运行测试
package 打包成 jar/war
install 安装到本地 Maven 仓库
deploy 发布到远程仓库

课程实验中最常用的是:

mvn clean package

8. Maven 和 IDEA 的关系

很多时候你在 IDEA 里打开 Java 项目,会看到右侧有 Maven 面板。

IDEA 本身是编辑器/IDE,Maven 是构建工具。

也就是说:

IDEA 负责写代码、运行、调试
Maven 负责管理依赖、编译、打包

当你修改了 pom.xml,IDEA 通常会提示:

Reload Maven Project

意思是让 IDEA 重新读取 Maven 配置,把新依赖下载进来。


9. Maven 在课程实验里的典型作用

比如你的课程实验是一个 Java Web 项目,可能会用到:

<dependencies>
    <!-- Servlet API -->
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>

    <!-- MySQL 驱动 -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.3.0</version>
    </dependency>
</dependencies>

这就说明项目需要:

  1. Servlet 相关接口;
  2. MySQL 数据库驱动。

Maven 会根据这些配置自动下载依赖。


10. 怎么理解 Maven?

Maven 是 Java 项目的自动化构建和依赖管理工具,主要通过 pom.xml 管理项目依赖、编译、测试和打包流程。
Maven 之于 Java,就像 Cargo 之于 Rust。

更多推荐