Maven 简介与安装配置
Maven 是 Java 世界最主流的项目构建和依赖管理工具。几乎所有 Java 项目都使用 Maven,理解 Maven 的安装和配置是 Java 开发的基础。
为什么需要 Maven
传统项目构建的痛点
Bash
场景:开发一个 Java Web 项目
传统方式:
步骤1:手动下载 jar 包
- Spring 框架(10+个 jar)
- Hibernate(5+个 jar)
- 数据库驱动
- 日志库
- 测试框架
- ...几十个 jar
步骤2:放入 lib 目录
project/lib/
├── spring-core-5.3.20.jar
├── spring-context-5.3.20.jar
├── spring-web-5.3.20.jar
├── hibernate-core-5.6.10.jar
├── mysql-connector-java-8.0.28.jar
└── ...几十个
问题:
- 不知道每个库还依赖哪些库
- 版本号需要手动管理
- 不同项目 jar包可能不同版本
- 团队成员 jar包可能不一致
- 升级库需要手动替换
步骤3:编译打包
- 用 IDE 编译(不同 IDE 配置不同)
- 或用 Ant写 build.xml
- 或写 shell 脚本
问题:
- 不同项目构建方式不同
- 没有标准流程
- 新人上手困难
Maven 解决的问题
Bash
Maven 提供的解决方案:
1.依赖管理
你只需声明:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
Maven 自动完成:
-下载 spring-context.jar
- 解析 spring-context 的依赖
- 自动下载所有依赖
- 自动管理版本
2.标准化构建流程
所有 Maven 项目统一流程:
mvn clean → compile → test → package → install
不需要:
- 手动编译
- 手动写脚本
- 学习不同项目的构建方式
3.项目结构标准化
所有 Maven 项目统一目录:
src/main/java/ ← 源码
src/main/resources/ ←资源
src/test/java/ ← 测试
target/ ← 输出
新人一看就懂,无需适应不同项目结构
Maven 核心概念
Maven 是什么
Maven =项目构建 + 依赖管理 +项目信息管理
XML
┌────────────────────────────────────────────────────────┐
│ Maven │
├────────────────┬────────────────┬──────────────────────┤
│ 项目构建 │ 依赖管理 │ 项目信息管理 │
│ │ │ │
│ -编译 │ -自动下载 │ -项目名称、描述 │
│ - 测试 │ -版本管理 │ -开发者信息 │
│ -打包 │ -传递依赖 │ -许可证 │
│ -发布 │ -仓库管理 │ -文档生成 │
└────────────────┴────────────────┴──────────────────────┘
Maven 核心组件
| 组件 | 说明 |
|---|---|
| POM | 项目对象模型,pom.xml 配置文件 |
| 坐标 | groupId:artifactId:version,唯一标识构件 |
| 依赖 | 项目需要的外部库 |
| 仓库 | 存储构件的地方(本地、中央、私有) |
| 生命周期 | 构建阶段的顺序(compile → test → package) |
| 插件 | 执行具体构建任务(编译、打包等) |
Maven 与 Ant、Gradle对比
| 特性 | Ant | Maven | Gradle |
|---|---|---|---|
| 构建方式 | 过程式(写脚本) | 声明式(写配置) | 声明式 + DSL |
| 依赖管理 | 手动 | 自动 | 自动 |
| 标准化 | 无 | 强(约定优于配置) | 中 |
| 配置文件 | build.xml | pom.xml | build.gradle |
| 学习难度 | 低 | 中 | 较高 |
| 主流程度 | 较少 | 最主流 | 增长快 |
选择建议:
XML
- 传统企业项目:Maven(稳定、标准)
- Android 项目:Gradle(官方推荐)
- 新技术栈项目:Gradle(灵活)
- 简单脚本任务:Ant(过程式控制)
Maven 安装
前置要求
Bash
必须先安装 JDK:
检查 JDK:
java -version
输出:
java version "17.0.2"
Java(TM) SE Runtime Environment
检查 JAVA_HOME:
echo $JAVA_HOME # Linux/Mac
echo %JAVA_HOME% # Windows
输出:
/usr/lib/jvm/java-17 # Linux
C:\Program Files\Java\jdk-17 # Windows
如果没有 JAVA_HOME:
- 需要先配置 JDK
- Maven 无法运行
Windows 安装步骤
Bash
步骤1:下载 Maven
官网:https://maven.apache.org/download.cgi
下载:apache-maven-3.9.6-bin.zip
步骤2:解压到指定目录
解压到:D:\apache-maven-3.9.6
目录结构:
D:\apache-maven-3.9.6\
├── bin/ ← 命令脚本
├── boot/ ← 类加载器
├── conf/ ← 配置文件(settings.xml)
├── lib/ ← Maven 运行库
└── LICENSE
└── NOTICE
└── README.txt
步骤3:配置环境变量
系统环境变量:
MAVEN_HOME=D:\apache-maven-3.9.6
Path 追加:
%MAVEN_HOME%\bin
步骤4:验证安装
打开命令行:
mvn -v
输出:
Apache Maven 3.9.6
Maven home: D:\apache-maven-3.9.6\boot\plexus-classworlds-2.8.6.jar
Java version: 17.0.2, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk-17
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10"
安装成功!
Linux/Mac 安装步骤
Bash
# 方式1:使用包管理器(推荐)
# Mac(Homebrew)
brew install maven
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install maven
# CentOS/RHEL
sudo yum install maven
# 方式2:手动安装
# 下载
wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
# 解压
tar -xzf apache-maven-3.9.6-bin.tar.gz
sudo mv apache-maven-3.9.6 /opt/
# 配置环境变量
echo 'export MAVEN_HOME=/opt/apache-maven-3.9.6' >> ~/.bashrc
echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# 验证
mvn -v
IDE 内置 Maven
text
IntelliJ IDEA:
- 内置 Maven,无需单独安装
- Settings → Build → Build Tools → Maven
- 可使用内置或指定外部 Maven
Eclipse:
- 内置 Maven(m2e插件)
- Preferences → Maven → Installations
- 可添加外部 Maven
建议:
- 开发时使用 IDE 内置 Maven 即可
- 命令行构建时使用外部 Maven
- 保持版本一致
Maven 配置
settings.xml 配置文件
settings.xml 是 Maven 的全局配置文件:
| 配置位置 | 说明 | 优先级 |
|---|---|---|
${MAVEN_HOME}/conf/settings.xml | 全局配置 | 低 |
${user.home}/.m2/settings.xml | 用户配置 | 高 |
建议使用用户级配置,不影响其他用户。
创建用户级 settings.xml
text
# 创建 .m2 目录
mkdir ~/.m2 # Linux/Mac
mkdir %USERPROFILE%\.m2 # Windows
# 复制模板
cp ${MAVEN_HOME}/conf/settings.xml ~/.m2/settings.xml
# 或直接创建
touch ~/.m2/settings.xml
settings.xml 基础配置
text
<?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">
<!-- ==================== 本地仓库 ==================== -->
<!-- 默认:${user.home}/.m2/repository -->
<localRepository>D:/maven-repo</localRepository>
<!-- ==================== 镜像配置 ==================== -->
<mirrors>
<!-- 阿里云公共仓库(推荐国内使用) -->
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<!-- 阿里云 Spring 仓库 -->
<mirror>
<id>aliyun-spring</id>
<mirrorOf>spring</mirrorOf>
<name>阿里云 Spring仓库</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
</mirrors>
<!-- ==================== 仓库配置 ==================== -->
<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!-- ==================== 插件仓库 ==================== -->
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<!-- ==================== Profile ==================== -->
<profiles>
<profile>
<id>jdk-17</id>
<activation>
<jdk>17</jdk>
</activation>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</profile>
</profiles>
</settings>
重要配置详解
1. 本地仓库路径(localRepository)
text
默认本地仓库:
- Windows:%USERPROFILE%\.m2\repository
- Linux/Mac:~/.m2/repository
修改原因:
- 默认在用户目录,可能空间不足
- 统一管理,方便清理
建议:
<localRepository>D:/maven-repo</localRepository>
2. 镜像配置(mirrors)—— 重要
text
为什么需要镜像:
中央仓库在国外:
https://repo.maven.apache.org/maven2
国内下载问题:
- 速度慢(几十 KB/s)
- 可能连接失败
- 影响开发效率
阿里云镜像:
https://maven.aliyun.com/repository/public
效果:
- 下载速度提升到MB/s
- 稳定可靠
- 国内开发必备
配置:
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf> ← 替代中央仓库
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
mirrorOf 说明:
- central:替代中央仓库
- *:替代所有仓库
- external:*:替代所有外部仓库
- *,!repo1:替代除 repo1 外的所有仓库
3. 编译器版本配置
text
<profiles>
<profile>
<id>jdk-17</id>
<activation>
<jdk>17</jdk> <!-- JDK 17时自动激活 -->
</activation>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
</profile>
</profiles>
本地仓库
本地仓库的作用
text
Maven 依赖查找流程:
1. pom.xml 声明依赖
2. 检查本地仓库
~/.m2/repository/
├── org/
│ └── springframework/
│ └── spring-core/
│ └── 5.3.20/
│ └── spring-core-5.3.20.jar ← 查找这里
3.本地有 → 直接使用
本地无 → 从远程仓库下载
4.下载后缓存到本地仓库
下次构建直接使用,不再下载
优势:
- 依赖只下载一次
- 后续构建秒级完成
- 团队成员各自缓存
本地仓库目录结构
text
~/.m2/repository/
├── org/
│ └── springframework/
│ ├── spring-core/
│ │ ├── 5.3.20/
│ │ │ ├── spring-core-5.3.20.jar
│ │ │ ├── spring-core-5.3.20.pom
│ │ │ └── _remote.repositories
│ │ └── 5.3.21/
│ │ └── spring-core-5.3.21.jar
│ └── spring-context/
│ └── 5.3.20/
│ └── spring-context-5.3.20.jar
├── com/
│ └── example/
│ └── my-app/
│ ├── 1.0.0/
│ │ └── my-app-1.0.0.jar
│ └── 1.0.1/
│ └── my-app-1.0.1.jar
└── ...
结构说明:
groupId → 目录层级(点号替换为斜杠)
artifactId → 子目录
version → 版本目录
清理本地仓库
text
# 清理特定依赖
rm -rf ~/.m2/repository/org/springframework/spring-core
# 清理所有依赖(慎用)
rm -rf ~/.m2/repository
# 强制更新 SNAPSHOT
mvn clean install -U
验证 Maven 安装
验证命令
text
# 查看版本
mvn -v
# 查看详细信息
mvn -X
# 查看帮助
mvn -h
# 查看有效配置
mvn help:effective-settings
创建第一个 Maven 项目
text
# 使用 archetype 创建项目
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
# 生成的项目结构
my-app/
├── pom.xml
└── src/
├── main/
│ └── java/
│ └── com/
│ └── example/
│ └── App.java
└── test/
└── java/
└── com/
└── example/
└── AppTest.java
# 编译项目
cd my-app
mvn compile
# 运行
mvn exec:java -Dexec.mainClass=com.example.App
输出:
Hello World!
常见安装问题
问题1:mvn命令找不到
text
报错:
'mvn' 不是内部或外部命令
原因:
- MAVEN_HOME 未配置
- Path 未添加 Maven bin目录
解决:
1. 配置 MAVEN_HOME
2. Path 追加 %MAVEN_HOME%\bin
3. 重启命令行
4. mvn -v验证
问题2:JAVA_HOME未配置
text
报错:
The JAVA_HOME environment variable is not defined correctly
原因:
- JAVA_HOME 未配置
- JAVA_HOME指向错误路径
解决:
1. 配置 JAVA_HOME
Windows:%JAVA_HOME%=%ProgramFiles%\Java\jdk-17
Linux/Mac:export JAVA_HOME=/usr/lib/jvm/java-17
2. 验证
java -version
问题3:依赖下载失败
text
报错:
Could not transfer artifact ... from central
原因:
- 网络不通
- 中央仓库慢或不可用
解决:
配置阿里云镜像
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
问题4:settings.xml 不生效
text
排查步骤:
1. 检查配置文件位置
mvn -X | grep "settings file"
2. 确认文件存在
ls ~/.m2/settings.xml
3. 检查语法正确
mvn help:effective-settings
4. IDE 可能使用不同 settings.xml
IntelliJ: Settings → Maven → User settings file
IDE 配置 Maven
IntelliJ IDEA 配置
text
Settings → Build, Execution, Deployment → Build Tools → Maven
配置项:
- Maven home path: D:\apache-maven-3.9.6
- User settings file: D:\.m2\settings.xml(勾选 Override)
- Local repository: D:\maven-repo(勾选 Override)
验证:
IDEA 右侧 Maven 工具窗口
→ 点击 Execute Maven Goal
→ 输入 mvn -v
→ 查看输出
Eclipse 配置
text
Preferences → Maven
配置项:
- Installations: Add → 选择 Maven 安装目录
- User Settings: Global Settings / User Settings
- Local Repository: 显示当前仓库路径
验证:
右键项目 → Run As → Maven build...
→ Goals: compile
→ Run
要点总结
- Maven 核心功能:项目构建、依赖管理、项目信息管理
- 安装前置要求:必须先安装 JDK 并配置 JAVA_HOME
- 配置环境变量:MAVEN_HOME 和 Path
- settings.xml 配置:用户级配置优于全局配置
- 本地仓库路径:建议修改到独立目录
- 镜像配置必备:国内使用阿里云镜像加速
- 验证安装:mvn -v 查看版本信息
- 创建第一个项目:mvn archetype:generate
📝 发现内容有误?点击此处直接编辑