Maven 是什么

Maven 定义

Maven是一个Java项目的“构建和依赖管理工具”。

它的功能主要是:

  • 项目怎么组织目录
  • 需要哪些第三方的jar包
  • 怎么编译、测试、打包、发布

Before Maven

在没有 Maven 的年代,你要自己完成下面的活:

  1. 下载好 jar 包,然后导入到项目的lib文件夹里。
  2. 自己维护版本,各个jar包之间的版本匹配
  3. 不同机器的jar包不一样的时候,项目跑不起来,不适合团队开发

After Maven

Maven接管了上面需要人手动执行的操作:

  1. 不需要手动下包导包,Maven会更具你在pom.xml文件中的依赖配置情况,帮你自动下载指定版本的库,解决传递依赖的问题(A 依赖 B,B 又依赖 C)。
  2. Maven可以自动完成打包过程。

Maven 的关键概念

pom.xml 文件

这是本项目的总配置文件,Maven会读取这个文件完成操作。我们所需要的依赖,需要的插件、打包方式都在这里进行声明。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<project>
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>demo-app</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>

<dependencies>
<!-- 举例:引入 Spring Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
</project>

配置文件的标签名

  • groupId:组织/公司/大项目名
  • artifactId:具体模块名
  • version:版本号

在写一个依赖的时候,我们往往需要指定这三个标签值。

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.30</version>
</dependency>

本地仓库和远程仓库

Maven 下依赖的过程是这样的:

  1. 你写好 pom.xml
  2. 执行 mvn compile / mvn package 等命令(可以用编译器一键完成)
  3. Maven 先去本地仓库(你电脑某个 .m2/repository 目录)找
  4. 找不到再去远程仓库(比如 Maven Central、阿里云镜像等)下载
  5. 下载完放到本地仓库,下次再用就不需要重新下载

生命周期管理

Maven把项目的“构建过程”抽象成一条流水线:

典型阶段:

  • clean:清理 target 目录
  • compile:编译源码
  • test:执行测试
  • package:打包(jar/war)
  • install:安装到本地仓库
  • deploy:发布到远程仓库

插件

我们注意到 Maven 可以在 pom.xml 文件中配置插件。

这是因为Maven本身也是一个框架,需要通过Maven完成任务,也需要为Maven配置插件。

  • 编译:maven-compiler-plugin
  • 测试:maven-surefire-plugin
  • 打包:maven-jar-pluginmaven-war-plugin
  • Spring Boot 打包启动:spring-boot-maven-plugin

Maven 和 JDK 的关系

JDK:是Java的编译器,为Java程序提供运行环境

Maven:调用JDK的编译器,帮我们组织JDk进行编译/打包流程

Maven 和 Spring / Spring Boot的关系

Spring 和 Spring boot 是 Java 框架,是由一系列库组成的。

Maven:用来自动下载这些框架的jar包,并且帮助我们运用这些jar包构建应用。

Maven 和 IDEA 的关系

  • IDEA:IDE,图形界面工具

  • Maven:命令行构建工具(IDE 只是帮你把命令包装成按钮)

    👉 你在 IDEA 里点“maven 重新加载”,本质是帮你执行 mvn 命令。

开发中运用Maven的标准流程

典型 Java 项目流程是这样的:

  1. 用 IDEA 创建 Maven 项目(或者 Spring Initializr)
  2. pom.xml
    • 指定 JDK 版本
    • 引入 Spring、MyBatis、Lombok 等依赖
  3. src/main/java 写业务代码
  4. 运行:
    • IDEA 里右键 run
    • 或者在命令行 mvn package && java -jar xxx.jar

整个过程中,依赖管理 + 构建打包这块都交给 Maven 了