🔥 前言:为什么你一定要学 Maven?

还记得第一次写 Java 项目时的痛苦吗?

想用 JSON 解析?百度搜半天,手动下载fastjson.jar,拖进 lib 目录。

想连数据库?再下载 mysql-connector.jar,继续手动拖。

结果一运行——报错了。

缺个依赖,版本不对,jar 包冲突……

手动管 jar 包的五大噩梦:

  • ❌ 去哪下?官网都找不到

  • ❌ 版本怎么选?下错了直接报错

  • ❌ A 依赖 B,B 依赖 C,漏一个全崩——jar 包地狱

  • ❌ 打包发布?手动操作能让你怀疑人生

  • ❌ 团队协作?你用 1.0 他用 2.0,合代码直接爆炸 💥

Maven 就是来终结这些痛苦的。

一行配置自动下载依赖。

一条命令完成打包。

团队版本统一管理。

这篇文章用最通俗的大白话,手把手带你从零掌握 Maven。

建议先收藏,跟着一步步操作。 🚀


一、Maven 简介:一句话说清楚

1.1 Maven 是什么?

Maven 就是 Java 项目的“全能管家”。

它帮你做三件事:

能力

大白话

依赖管理

告诉它要什么 jar 包,自动下载,相关依赖也一起搞定

项目构建

编译、测试、打包、部署,一条命令搞定

统一结构

所有项目目录长一样,换公司也能秒上手

1.2 对比感受一下

【不用 Maven】 
你:“我要用 Spring” → 百度搜 → 找官网 → 下 jar → 
拖进项目 → 发现还缺 5 个依赖 → 再搜 → 再下 → 版本冲突 → 崩溃…… 
【用 Maven】 
你:写 3 行配置 Maven:Spring 和所有依赖都下好了,版本也配好了 ✅

1.3 背景信息

  • Apache 基金会出品,开源免费

  • Java 生态最主流的构建工具,没有之一

  • 几乎所有企业级 Java 项目都在用


二、核心概念(大白话版,别跳过)

2.1 POM(pom.xml)

pom.xml = 项目的“身份证 + 购物清单”。

  • 身份证:项目叫什么、版本多少

  • 购物清单:需要哪些 jar 包

每个 Maven 项目有且仅有一个pom.xml

一切围绕它展开。

2.2 坐标(GAV)

每个 jar 包都有唯一身份标识,由三部分组成:

简称

含义

举例

G - groupId

谁开发的(域名反写)

com.alibaba

A - artifactId

叫什么名

fastjson

V - version

哪个版本

1.2.83

写在 pom.xml 里长这样:

<dependency>
 <groupId>com.alibaba</groupId> 
 <artifactId>fastjson</artifactId> 
 <version>1.2.83</version> 
</dependency>

💡 不知道坐标怎么写?mvnrepository.com 搜索,直接复制。这是 Maven 依赖的“淘宝”,必须收藏

2.3 仓库(三级快递站)

jar 包下载下来存哪?——仓库

项目需要一个 jar 包 
 ↓ 
 ① 先找【本地仓库】(你电脑上的一个文件夹) 
 ↓ 
 没有 
 ② 再找【私服】(公司内部的,可选)
 ↓
没有
 ③ 最后找【中央仓库】(Maven 官方的,在国外)
 ↓ 
找到了 
下载到本地仓库缓存,下次直接用

三个仓库:

  • 本地仓库:你电脑上的文件夹,默认在 C:\Users\用户名\.m2\repository

  • 中央仓库:官方大仓库,啥都有,但在国外,下载慢

  • 私服:公司自建的,入门先不管

⚠️ 避坑: 默认本地仓库在 C 盘,日积月累好几个 GB。后面教你改到 D 盘。

2.4 依赖传递

最强功能之一。

 你只声明了依赖 A 
 A 内部依赖了 B 和 C
 B 又依赖了 D
 Maven 自动把 A、B、C、D 全下载好!
 你只写一行就够了。

这就是 Maven 解决“jar 包地狱”的核心。

2.5 生命周期

Maven 把构建过程标准化成流水线工序

clean → compile → test → package → install → deploy

阶段

做了啥

clean

删除上次的编译文件

compile

.java → .class

test

跑单元测试

package

打成 jar/war 包

install

装到本地仓库

deploy

发布到私服(入门先不管)

关键特性:执行后面的,前面的会自动执行。

比如执行 package,会自动先 compiletestpackage

💡 新手记住 cleancompilepackageinstall 就够了。


三、版本选择:Maven & JDK 兼容对照表

⚠️ 新手第一个大坑:Maven 和 JDK 版本不兼容,装完直接报错。

先看这张表再下载!

3.1 兼容性对照表

Maven 版本

最低 JDK 版本

最高支持 JDK

状态

3.6.3

JDK 7

JDK 15

老项目常见

3.8.8

JDK 7

JDK 19

过渡版本

3.9.6

JDK 8

JDK 21

⭐ 当前稳定版

3.9.9

JDK 8

JDK 23

⭐ 最新稳定版

4.0.x

JDK 17

🚧 开发中,别碰

3.2 新手推荐方案(二选一)

方案

JDK

Maven

适合谁

稳妥之选

JDK 8

Maven 3.9.9

大部分新手、企业主流

新版体验

JDK 17

Maven 3.9.9

学 Spring Boot 3.x

3.3 常见翻车场景

 ❌ JDK 7 + Maven 3.9.x → 启动直接报错! 
 ❌ JDK 8 + Maven 4.0.x → 启动直接报错!
 ❌ JDK 20 + Maven 3.6.3 → 编译可能异常!

💡 java -version先跑 确认 JDK 版本,再选 Maven。


四、Maven 安装(全平台:Windows + Mac + Linux)

4.1 前提:确认 JDK 已安装

Win + R → 输入 cmd → 回车,执行:

java -version

看到版本号 → JDK 已就绪。

提示“不是内部命令” → 先装 JDK。

4.2 下载 Maven

官网:maven.apache.org/download.cgi

下载 Binary zip 版本。

💡 下载慢?用清华镜像:

https://mirrors.tuna.tsinghua.edu.cn/apache/maven/

4.3 Windows 安装(详细步骤)

  1. 解压到无中文、无空格路径,例如: D:\Development\apache-maven-3.9.9

  2. 配置环境变量

    1. 新建系统变量MAVEN_HOME,值为解压路径

    2. Path 变量追加 %MAVEN_HOME%\bin

  3. 重新打开 cmd,执行验证命令: mvn -version

出现版本信息,说明安装成功。

4.4 Mac / Linux 极简安装

 # Mac(Homebrew) 
 brew install maven 
 # Linux(Ubuntu/Debian) 
 sudo apt update sudo apt install maven
 # 验证安装
 mvn -version

一行命令完成安装,无需手动配置环境变量。


五、基础配置(装完必做,不配会踩坑)

配置文件路径:Maven安装目录/conf/settings.xml

新手直接复制下方完整纯净配置,全覆盖本地仓库、阿里云镜像、JDK版本,零出错。

5.1 完整settings.xml(一键复制)

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
        http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- 本地仓库路径,Windows用户直接用,Mac/Linux替换下方路径 -->
    <localRepository>D:\Development\maven-repository</localRepository>

    <!-- 阿里云镜像,加速依赖下载 -->
    <mirrors>
        <mirror>
            <id>aliyunmaven</id>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>

    <!-- 全局JDK编译版本,用17则替换数值为17 -->
    <profiles>
        <profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            </properties>
        </profile>
    </profiles>

</settings>

5.2 Mac/Linux用户修改说明

将配置中本地仓库路径替换为自己的路径,示例:

<localRepository>/Users/用户名/maven-repository</localRepository>

六、IDEA 集成 Maven(新版+旧版通用)

6.1 全局配置(一次配置,终身生效)

  1. 打开 IDEA 欢迎页,不进入项目

  2. 点击 CustomizeAll Settings

  3. 搜索 Maven,修改三项配置

    1. Maven home path:选中自己安装的Maven目录,不使用IDEA自带版本

    2. User settings file:勾选Override,指向conf/settings.xml

    3. Local repository:勾选Override,选中自定义仓库路径

  4. 保存配置即可

⚠️ 避坑: File-Settings 只对当前项目生效,全局配置必须在欢迎页操作。

6.2 创建Maven项目

新版IDEA(2023及以上)
  1. 欢迎页 → New Project

  2. Language选Java,Build system 选择Maven

  3. 填写GroupId、ArtifactId,完成创建

旧版IDEA
  1. New Project → 左侧选Maven

  2. 不勾选Create from archetype

  3. 填写信息,下一步完成

6.3 标准项目结构

maven-demo/
├── src/
│   ├── main/
│   │   ├── java/            # 业务源码
│   │   └── resources/       # 配置文件
│   └── test/
│       ├── java/            # 测试代码
│       └── resources/       # 测试配置
├── pom.xml                  # Maven核心配置
└── target/                  # 编译打包产物

6.4 IDEA Maven工具栏

右侧打开Maven面板,Lifecycle目录下,双击即可执行对应命令,无需手动输入。


七、常用命令(必记速查)

命令

作用

使用场景

mvn clean

清理编译产物

项目报错、重新构建

mvn compile

编译源码

检查代码语法

mvn package

打包项目

生成可运行jar包

mvn install

安装到本地仓库

多项目引用

mvn clean package

清理后打包

⭐ 最常用

mvn clean package -DskipTests

跳过测试打包

赶进度、测试未写完

mvn dependency:tree

查看依赖树

排查版本冲突


八、实战 Demo:从零到运行

8.1 创建项目

按照前文步骤,创建Maven项目,GroupId填com.example,ArtifactId填 maven-demo

8.2 编写pom.xml

在dependencies标签内添加依赖:

<dependencies>
    <!-- JSON解析工具 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.83</version>
    </dependency>

    <!-- 单元测试 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

保存后刷新Maven,自动下载依赖。

8.3 编写测试代码

package com.example;

import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;

public class App {
    public static void main(String[] args) {
        Map<String, Object> user = new HashMap<>();
        user.put("name", "张三");
        user.put("age", 25);
        user.put("city", "北京");

        // 转JSON字符串
        String json = JSON.toJSONString(user);
        System.out.println("JSON:" + json);

        // 解析JSON
        Map parsed = JSON.parseObject(json, Map.class);
        System.out.println("姓名:" + parsed.get("name"));
    }
}

8.4 运行与打包

  1. 右键运行main方法,控制台正常打印数据,说明依赖生效

  2. 执行 mvn clean package,target目录生成jar包,打包完成


九、依赖scope(作用域)

scope值

编译

测试

运行

打包

常用场景

compile(默认)

业务代码依赖

test

JUnit测试框架

provided

Servlet-api

runtime

数据库驱动


十、依赖冲突排查与解决

10.1 冲突原因

多个依赖引入了同一个jar包的不同版本,导致方法缺失、类找不到,报错 NoSuchMethodError

10.2 排查方式

mvn dependency:tree

执行命令查看依赖树,找出冲突版本。

10.3 解决方法

方法一:排除冲突依赖
<dependency>
    <groupId>com.aaa</groupId>
    <artifactId>module-a</artifactId>
    <version>1.0</version>
    <exclusions>
        <!-- 排除冲突版本 -->
        <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </exclusion>
    </exclusions>
</dependency>
方法二:手动指定版本

在pom.xml直接声明需要的版本,优先级最高。


十一、新手常见问题速查

❌ 依赖下载失败、标红

  1. 确认已配置阿里云镜像

  2. 删除本地仓库中 .lastUpdated 后缀文件

  3. 执行 mvn clean install -U 强制更新

❌ mvn命令不是内部命令

  1. 检查MAVEN_HOME环境变量路径正确

  2. Path已追加bin目录

  3. 重新打开cmd窗口

❌ 编译提示源版本过时

在pom.xmlproperties标签内指定JDK版本:

<maven.compiler.source>8</maven.compiler.source> 

<maven.compiler.target>8</maven.compiler.target>

❌ IDEA配置不生效

  1. 全局配置需在欢迎页设置

  2. 勾选Override,核对路径无误

  3. 重启IDEA


十二、全文总结

Maven的核心设计理念:约定优于配置

它统一了项目结构、简化了依赖管理、自动化了构建流程,彻底告别手动导包的繁琐。

本文内容覆盖零基础入门全流程,掌握这些足以应对日常开发和企业项目需求,进阶玩法(多模块、profile、插件)可在熟练后深入学习。


🎁 文末彩蛋:命令速查表

# 基础命令
mvn clean                
mvn compile              
mvn test                 
mvn package              
mvn install              

# 高频组合命令
mvn clean package        
mvn clean install        
mvn clean package -DskipTests  

# 排查工具
mvn dependency:tree      
mvn help:effective-pom    
# 强制更新
mvn clean install -U

🔥 如果这篇文章对你有帮助,欢迎点赞、收藏、关注,持续更新Java干货教程!

有疑问可在评论区留言,看到都会回复。

原创不易,转载请注明出处。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐