Maven 教程
Maven 教程
Maven 是 Apache 出品的 Java 项目构建与依赖管理工具,通过"约定优于配置"的理念,极大简化了项目的构建、测试、打包和部署流程。
本教程包含
- 基础篇:简介、环境配置、第一个项目
- 核心篇:POM、构建生命周期、依赖机制、仓库、插件
- 进阶篇:多模块、自动化构建部署、Web 应用、IDE 集成
核心概念
- POM:项目对象模型,一切配置的中心
- 仓库:本地/中央/远程仓库存储依赖
- 坐标:groupId + artifactId + version 唯一定位构件
适合人群
Java 开发者、需要管理依赖和自动化的团队、学习 Spring 生态的初学者。
Maven 简介
Maven 简介
Maven 一词源自犹太语,意为"知识的积累"。它由 Apache 软件基金会维护,是目前 Java 领域最流行的构建工具。
Maven 能做什么
- 依赖管理:自动下载、更新 jar 包,解决版本冲突
- 构建:编译、测试、打包、安装、部署一条龙
- 项目规范:统一目录结构,团队协作无障碍
- 插件生态:几乎所有功能都由插件完成,可扩展
与 Ant / Gradle 对比
| 工具 | 特点 |
|---|---|
| Ant | 灵活但无约定,构建脚本繁琐 |
| Maven | 约定优于配置,依赖管理强大,XML 配置 |
| Gradle | 基于 Groovy/Kotlin DSL,性能更好,Android 默认 |
工作原理
Maven 根据 pom.xml 中声明的依赖坐标,依次从本地仓库、中央仓库、远程仓库获取构件,并执行绑定在生命周期各阶段的插件目标。
Maven 环境配置
Maven 环境配置
配置 Maven 环境需要安装 JDK 和 Maven,并设置相关环境变量。
前置要求
Maven 3.9+ 需要 JDK 8 及以上版本。先确认 JDK 已安装:
java -version
下载与安装 Maven
- 从 maven.apache.org 下载二进制压缩包
- 解压到指定目录(如
D:/apache-maven-3.9.x或/opt/maven)
配置环境变量(Windows)
# 新建系统变量
MAVEN_HOME = D:/apache-maven-3.9.x
# 编辑 Path,追加
%MAVEN_HOME%\bin
配置环境变量(Linux/macOS)
# 编辑 ~/.bashrc 或 ~/.zshrc
export MAVEN_HOME=/opt/apache-maven-3.9.x
export PATH=$MAVEN_HOME/bin:$PATH
验证安装
mvn -version
输出 Maven 版本、Java 版本和本地仓库路径即安装成功。
Maven 第一个项目
Maven 第一个项目
用 Maven 创建第一个 Java 项目,体验标准化的项目结构。
使用原型创建项目
mvn archetype:generate -DgroupId=com.example -DartifactId=hello-world -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
生成的目录结构
hello-world/
├── pom.xml
└── src/
├── main/
│ └── java/com/example/App.java
└── test/
└── java/com/example/AppTest.java
标准目录约定
src/main/java 主代码
src/main/resources 资源文件
src/test/java 测试代码
src/test/resources 测试资源
编译与运行
mvn compile # 编译
mvn test # 运行测试
mvn package # 打包(生成 jar)
java -cp target/hello-world-1.0-SNAPSHOT.jar com.example.App # 运行
整个过程无需手动管理 classpath,Maven 自动处理依赖。
Maven POM
Maven POM
POM(Project Object Model)是 Maven 项目配置的核心文件 pom.xml,定义了项目的所有信息。
POM 基本结构
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 坐标:唯一标识项目 -->
<groupId>com.example</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- 属性 -->
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<!-- 依赖 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
常用元素
- packaging:jar/war/pom 等
- properties:自定义属性,可被 ${} 引用
- dependencies:声明依赖
- build:构建配置(插件、资源)
- parent:继承父 POM(Spring Boot 场景)
Maven 构建生命周期
Maven 构建生命周期
Maven 定义了标准化的构建生命周期,每个阶段都有固定的执行顺序。
三大生命周期
- clean:清理构建产物
- default:核心构建流程
- site:生成项目站点文档
default 生命周期主要阶段
validate 验证项目
compile 编译主代码
test 运行单元测试
package 打包(jar/war)
verify 集成测试验证
install 安装到本地仓库
deploy 部署到远程仓库
执行规则
运行任意阶段,其之前的阶段都会自动执行。例如:
mvn test
# 实际执行: validate → compile → test
mvn package
# 实际执行: validate → compile → test → package
组合命令
mvn clean package # 清理后重新打包
mvn clean install # 清理、打包并安装到本地仓库
各阶段实际由绑定其上的插件目标完成,可通过 mvn help:describe -Dcmd=package 查看。
Maven 构建配置文件
Maven 构建配置文件
Profile(配置文件)允许根据环境切换不同的构建配置,是区分开发/测试/生产环境的利器。
定义 Profile
<profiles>
<profile>
<id>dev</id>
<properties>
<db.url>jdbc:mysql://localhost:3306/dev</db.url>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<db.url>jdbc:mysql://prod-host:3306/prod</db.url>
</properties>
</profile>
</profiles>
激活 Profile
# 命令行激活
mvn package -P prod
# 默认激活
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
按环境激活
<activation>
<property>
<name>env</name>
<value>prod</value>
</property>
</activation>
# 通过 mvn package -Denv=prod 触发
查看激活的 Profile
mvn help:active-profilesMaven 常用命令
Maven 常用命令
掌握常用 Maven 命令是日常开发的基本功。
构建命令
mvn clean # 清理 target
mvn compile # 编译
mvn test # 测试
mvn package # 打包
mvn install # 安装到本地仓库
mvn deploy # 部署到远程仓库
mvn validate # 校验
组合与调试
mvn clean install -DskipTests # 跳过测试
mvn clean install -Dmaven.test.skip=true # 跳过测试编译
mvn -X package # 输出调试日志
mvn -q package # 安静模式
mvn -o package # 离线模式
依赖相关
mvn dependency:tree # 依赖树
mvn dependency:analyze # 分析未使用依赖
mvn dependency:list # 列出依赖
项目信息
mvn help:effective-pom # 查看合并后的 POM
mvn help:effective-settings # 查看有效 settings
mvn help:system # 系统信息
多模块项目需在根目录执行命令,用 -pl 模块名 指定模块,-am 同时构建依赖模块。
Maven 依赖机制
Maven 依赖机制
依赖管理是 Maven 最核心的价值,自动解析传递依赖并解决冲突。
声明依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
依赖范围(scope)
compile 默认,编译+运行都可用
provided 编译期提供(如 servlet-api),运行由容器提供
runtime 运行期需要,编译不需要
test 仅测试期(junit)
system 本地 jar(不推荐)
传递依赖
依赖 A 若依赖 B,Maven 会自动引入 B(传递依赖)。用 mvn dependency:tree 查看完整依赖树。
排除依赖
<dependency>
<groupId>com.example</groupId>
<artifactId>lib-a</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
版本冲突解决
冲突默认采用"最近优先"策略,可通过 dependencyManagement 统一版本管理。
Maven 多模块项目
Maven 多模块项目
多模块(Multi-module)项目将大项目拆分为多个可复用的子模块,是现代企业级 Java 项目的标准结构。
项目结构
parent-project/
├── pom.xml <!-- packaging=pom -->
├── common/ <!-- 通用模块 -->
│ └── pom.xml
├── service/ <!-- 业务模块,依赖 common -->
│ └── pom.xml
└── web/ <!-- Web 模块,依赖 service -->
└── pom.xml
父 POM 配置
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>service</module>
<module>web</module>
</modules>
<!-- 统一管理依赖版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version>
</dependency>
</dependencies>
</dependencyManagement>
子模块继承父 POM
<parent>
<groupId>com.example</groupId>
<artifactId>parent-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>common</artifactId>
构建命令
mvn clean install # 从根目录构建全部(按依赖顺序)
mvn -pl service -am package # 只构建 service 及其依赖Maven 仓库
Maven 仓库
仓库(Repository)用于存储 Maven 构件,分为本地仓库、中央仓库和远程仓库。
仓库类型
- 本地仓库:本机缓存,默认
~/.m2/repository - 中央仓库:repo.maven.apache.org,Maven 官方维护
- 远程仓库:公司私有仓库(如 Nexus、Artifactory)
配置本地仓库路径
# settings.xml 中配置
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0">
<localRepository>D:/maven-repo</localRepository>
</settings>
配置远程仓库(settings.xml)
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
依赖查找顺序
- 本地仓库 → 找到直接使用
- 远程仓库(镜像) → 下载并缓存到本地
- 中央仓库 → 最后兜底
部署到远程仓库
<distributionManagement>
<repository>
<id>releases</id>
<url>http://nexus.example.com/repository/maven-releases/</url>
</repository>
</distributionManagement>Maven 插件
Maven 插件
Maven 的所有功能都通过插件(Plugin)实现,插件由"目标(goal)"组成。
常用插件
maven-compiler-plugin 编译
maven-surefire-plugin 运行测试
maven-jar-plugin jar 打包
maven-war-plugin war 打包
maven-shade-plugin 生成可执行 fat-jar
maven-assembly-plugin 自定义打包
spring-boot-maven-plugin Spring Boot 打包
配置插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
插件绑定生命周期
大部分插件目标默认绑定到生命周期阶段(如 compiler:compile 绑定 compile),无需显式声明。
直接调用插件
mvn dependency:tree # 插件:目标
mvn help:effective-pom
mvn tomcat7:run # 内嵌 Tomcat 启动
编写自定义插件:继承 AbstractMojo,实现 execute() 方法,打包后即可被 Maven 加载。
Maven 构建 Java 项目
Maven 构建 Java 项目
以实际例子演示 Maven 如何构建一个完整的 Java 项目。
编写业务代码
// src/main/java/com/example/Calculator.java
package com.example;
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
编写测试
// src/test/java/com/example/CalculatorTest.java
package com.example;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CalculatorTest {
@Test
public void testAdd() {
assertEquals(3, new Calculator().add(1, 2));
}
}
执行构建
mvn clean package
构建输出
target/
├── classes/ # 编译后的 class
├── test-classes/ # 测试 class
├── surefire-reports/ # 测试报告
└── calculator-1.0-SNAPSHOT.jar # 最终产物
常见问题
- 测试失败:查看 surefire-reports 报告
- 编码问题:在 pom 中设置
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - 下载慢:配置阿里云镜像
Maven 构建与项目测试
Maven 构建与项目测试
Maven 通过 Surefire 插件自动运行单元测试,并把结果生成报告。
运行测试
mvn test # 运行全部测试
mvn test -Dtest=CalculatorTest # 运行指定类
mvn test -Dtest=CalculatorTest#testAdd # 运行指定方法
mvn test -Dtest=*Test # 通配符匹配
测试报告
target/surefire-reports/
├── TEST-com.example.CalculatorTest.xml
└── com.example.CalculatorTest.txt
跳过测试
mvn package -DskipTests # 跳过执行,仍编译
mvn package -Dmaven.test.skip=true # 跳过编译+执行
生成测试覆盖率(可选)
mvn test jacoco:report
# 报告在 target/site/jacoco/index.html
测试失败处理
- Surefire 默认失败即终止构建
- 临时忽略失败:
-Dmaven.test.failure.ignore=true - 推荐:测试失败应修复而非跳过
集成测试
用 Failsafe 插件运行集成测试(IT 结尾),生命周期绑定到 integration-test 阶段。
Maven 引入外部依赖
Maven 引入外部依赖
使用第三方库是开发常态,Maven 让引入外部依赖变得极其简单。
在 POM 中声明
<dependencies>
<!-- 常用 JSON 库 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.32</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.9</version>
</dependency>
</dependencies>
查找坐标
在 mvnrepository.com 搜索库名,复制依赖声明即可,无需手动下载 jar。
引入本地 jar(不推荐)
# 将本地 jar 安装到本地仓库
mvn install:install-file -Dfile=lib/my-lib.jar \
-DgroupId=com.example -DartifactId=my-lib -Dversion=1.0 -Dpackaging=jar
# 然后像普通依赖一样引用
<dependency>
<groupId>com.example</groupId>
<artifactId>my-lib</artifactId>
<version>1.0</version>
</dependency>
依赖使用
import com.alibaba.fastjson2.JSON;
String json = JSON.toJSONString(obj);Maven 项目模板
Maven 项目模板
Archetype 是 Maven 的项目模板机制,一键生成标准化项目骨架。
常用 Archetype
maven-archetype-quickstart 普通 Java 项目
maven-archetype-webapp Java Web 项目
maven-archetype-site 站点项目
生成 Web 项目
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=my-webapp \
-DarchetypeArtifactId=maven-archetype-webapp \
-DinteractiveMode=false
交互模式
mvn archetype:generate
# 按提示选择 archetype(可输入序号或关键字过滤)
# 依次输入 groupId / artifactId / version / package
Spring Boot 项目(推荐)
# 使用 Spring Initializr
curl https://start.spring.io/starter.zip \
-d type=maven-project \
-d groupId=com.example \
-d artifactId=demo \
-d dependencies=web,data-jpa -o demo.zip
查看已安装模板
mvn archetype:generate -Dfilter=webapp
也可以把自定义模板安装到仓库,团队统一项目结构。
Maven 项目文档
Maven 项目文档
Maven Site 插件可以自动生成项目站点,包含依赖、插件、测试报告等信息。
生成站点
mvn site
生成结果在 target/site/index.html,浏览器打开即可查看。
站点内容
- 项目信息:概述、依赖、插件列表
- 测试报告:Surefire 测试结果
- 代码质量:Javadoc、Checkstyle 报告(需配置)
自定义站点描述
# src/site/apt/index.apt 中编写内容
# 或 src/site/markdown/index.md
# 配置站点插件
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.12.1</version>
</plugin>
</plugins>
</build>
发布站点
mvn site:deploy # 部署到远程服务器
站点功能适合开源项目展示文档和报告,企业内部可按需使用。
Maven 快照(SNAPSHOT)
Maven 快照(SNAPSHOT)
SNAPSHOT(快照)版本用于开发阶段,允许同一版本号的构件被反复更新。
什么是 SNAPSHOT
<version>1.0-SNAPSHOT</version>
发布版(如 1.0.0)在中央仓库不可变;而 1.0-SNAPSHOT 每次构建都可能不同,Maven 会定期检查并拉取最新快照。
使用场景
- 开发中相互依赖的模块(common 改完,service 立刻拿到)
- 多团队并行开发
- CI 流水线中的集成验证
快照更新策略
# 强制更新快照
mvn clean install -U
# 控制更新频率(settings.xml)
<repository>
<id>snapshots</id>
<url>http://nexus.example.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy> <!-- always/daily/interval:60 -->
</snapshots>
</repository>
发布 vs 快照
| 类型 | 可变 | 用途 |
|---|---|---|
| RELEASE(1.0.0) | 不可变 | 正式发布 |
| SNAPSHOT(1.0-SNAPSHOT) | 可变 | 开发迭代 |
Maven 自动化构建
Maven 自动化构建
将 Maven 集成到 CI/CD 流水线,实现代码提交后自动构建、测试、发布。
GitHub Actions 示例
# .github/workflows/build.yml
name: Java CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn -B clean package --no-transfer-progress
Jenkins 流水线
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
stage('Deploy') {
steps {
sh 'mvn deploy -DskipTests'
}
}
}
}
自动化最佳实践
- 缓存本地仓库,加速构建
- 使用
-B批处理模式,避免交互卡死 - 构建产物归档(Artifact),便于追溯
- 失败自动通知
Maven 依赖管理
Maven 依赖管理
依赖管理(Dependency Management)用于统一控制项目中所有依赖的版本,避免冲突。
dependencyManagement 的作用
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.2.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
它只声明版本,不引入依赖;子模块引用时无需写版本号。
子模块引用
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 版本由父 POM 统一管理 -->
</dependency>
</dependencies>
版本冲突检查
mvn dependency:tree
mvn dependency:analyze # 找出未使用/遗漏的依赖
冲突解决策略
- 就近原则:路径短的优先
- 第一声明优先:路径相同取先声明的
- 推荐:父 POM 用 dependencyManagement 锁定版本
版本属性统一
<properties>
<spring.version>6.1.2</spring.version>
</properties>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>Maven 自动化部署
Maven 自动化部署
Maven 可以配合插件把构建产物自动部署到应用服务器或远程仓库。
部署到远程仓库
mvn deploy
# 需要配置 distributionManagement(见仓库章节)
# 上传 jar/war 到 Nexus/Artifactory,供他人下载
部署到 Tomcat
<!-- 使用 tomcat-maven-plugin -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http://server:8080/manager/text</url>
<server>tomcat</server>
<path>/myapp</path>
</configuration>
</plugin>
mvn tomcat7:deploy # 部署
mvn tomcat7:redeploy # 重新部署
mvn tomcat7:undeploy # 卸载
Docker 部署
# 配合 Dockerfile 与 maven 插件构建镜像
mvn clean package docker:build
部署流程建议
- CI 中
mvn clean package生成产物 - 产物上传服务器/镜像仓库
- 服务器拉取并重启应用
- 健康检查验证
生产部署推荐结合容器化与编排工具(K8s),保证可回滚可观测。
Maven Web 应用
Maven Web 应用
Maven 原生支持 Web 项目,使用 war 打包并在内嵌容器中运行调试。
Web 项目结构
my-webapp/
├── pom.xml <!-- packaging=war -->
└── src/main/
├── java/ <!-- Servlet/Controller 代码 -->
├── resources/
└── webapp/ <!-- Web 资源 -->
├── WEB-INF/
│ └── web.xml
└── index.jsp
POM 关键配置
<packaging>war</packaging>
<!-- Servlet API 由容器提供 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
本地运行
mvn tomcat7:run # 内嵌 Tomcat 启动
mvn jetty:run # 或使用 Jetty
# 访问 http://localhost:8080/my-webapp
打包部署
mvn clean package
# 生成 target/my-webapp-1.0-SNAPSHOT.war
# 复制到 Tomcat 的 webapps 目录即完成部署
Spring Boot Web 项目
Spring Boot 项目打包为可执行 jar,java -jar app.jar 直接运行,内嵌 Tomcat,更适合微服务。
Maven Eclipse
Maven Eclipse
Eclipse 自带 m2e(Maven Integration for Eclipse)插件,可以直接导入和操作 Maven 项目。
导入 Maven 项目
- File → Import → Maven → Existing Maven Projects
- 选择包含 pom.xml 的目录
- 点击 Finish,自动识别模块和依赖
常用操作
- 右键项目 → Maven → Update Project(
Alt+F5):重新解析依赖 - 右键项目 → Run As → Maven build:执行自定义命令
- 右键项目 → Maven → Generate Sources:生成代码
常见问题
- 依赖不生效:先 Update Project,再 Clean 项目
- 编译版本错误:在 pom 设置 source/target,右键 → Maven → Update Project
- 找不到类:检查
mvn dependency:tree与 .classpath
安装配置
新版 Eclipse(2021+)内置 m2e;旧版通过 Help → Eclipse Marketplace 搜索 "m2e" 安装。
建议
尽量通过 Maven 管理依赖,不要在 Eclipse 中手动添加 jar,否则换环境会丢失配置。
Maven NetBeans
Maven NetBeans
NetBeans 对 Maven 提供了一流的原生支持,无需额外插件即可创建和构建 Maven 项目。
创建 Maven 项目
- File → New Project → Maven → Java Application
- 填写 Group ID、Artifact ID 等坐标
- 点击 Finish,NetBeans 自动生成项目结构
常用操作
- 右键项目 → Build:编译(
F11) - 右键项目 → Clean and Build:清理后构建(
Shift+F11) - 右键项目 → Test:运行测试(
Alt+F6) - 右键项目 → Run:运行主类(
F6)
打开已有项目
- File → Open Project
- 选择包含 pom.xml 的目录
- 自动识别为 Maven 项目并解析依赖
特性
- 依赖树可视化视图
- Maven 命令面板(右键 → Maven → 自定义)
- 与 NetBeans 的调试器无缝集成
建议
NetBeans 适合以 Maven 为中心的 Java 开发流程,开箱即用,无需繁琐配置。
Maven IntelliJ IDEA
Maven IntelliJ IDEA
IntelliJ IDEA 是目前 Maven 开发体验最好的 IDE,社区版即完全支持 Maven。
导入 Maven 项目
- File → Open,选择 pom.xml 或项目目录
- 选择 "Open as Project"
- IDEA 自动解析依赖并下载
Maven 工具窗口
右侧 "Maven" 面板(或 View → Tool Windows → Maven)提供:
- 生命周期:clean/validate/compile/test/package/install
- 插件列表:直接运行插件目标
- 依赖图:可视化查看依赖树
常用快捷键与操作
Ctrl+Shift+F10 运行
Alt+F5 刷新依赖
右侧 Maven 面板 → 刷新按钮 重新导入
配置本地仓库(可选)
Settings → Build Tools → Maven
Local repository: 指定本地仓库路径
User settings file: 指定 settings.xml
调试 Maven 项目
- 配置 Application/Debug 启动项
- 设置断点
- 点击 Debug 按钮即可调试 Spring Boot 等应用
常见问题
- 依赖红色:点击 Maven 面板刷新,或 File → Invalidate Caches
- 编码乱码:Settings → File Encodings 设为 UTF-8