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

  1. 从 maven.apache.org 下载二进制压缩包
  2. 解压到指定目录(如 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-profiles

Maven 常用命令

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>

依赖查找顺序

  1. 本地仓库 → 找到直接使用
  2. 远程仓库(镜像) → 下载并缓存到本地
  3. 中央仓库 → 最后兜底

部署到远程仓库

<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

部署流程建议

  1. CI 中 mvn clean package 生成产物
  2. 产物上传服务器/镜像仓库
  3. 服务器拉取并重启应用
  4. 健康检查验证

生产部署推荐结合容器化与编排工具(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 项目

  1. File → Import → Maven → Existing Maven Projects
  2. 选择包含 pom.xml 的目录
  3. 点击 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 项目

  1. File → New Project → Maven → Java Application
  2. 填写 Group ID、Artifact ID 等坐标
  3. 点击 Finish,NetBeans 自动生成项目结构

常用操作

  • 右键项目 → Build:编译(F11)
  • 右键项目 → Clean and Build:清理后构建(Shift+F11)
  • 右键项目 → Test:运行测试(Alt+F6)
  • 右键项目 → Run:运行主类(F6)

打开已有项目

  1. File → Open Project
  2. 选择包含 pom.xml 的目录
  3. 自动识别为 Maven 项目并解析依赖

特性

  • 依赖树可视化视图
  • Maven 命令面板(右键 → Maven → 自定义)
  • 与 NetBeans 的调试器无缝集成

建议

NetBeans 适合以 Maven 为中心的 Java 开发流程,开箱即用,无需繁琐配置。

Maven IntelliJ IDEA

Maven IntelliJ IDEA

IntelliJ IDEA 是目前 Maven 开发体验最好的 IDE,社区版即完全支持 Maven。

导入 Maven 项目

  1. File → Open,选择 pom.xml 或项目目录
  2. 选择 "Open as Project"
  3. 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 项目

  1. 配置 Application/Debug 启动项
  2. 设置断点
  3. 点击 Debug 按钮即可调试 Spring Boot 等应用

常见问题

  • 依赖红色:点击 Maven 面板刷新,或 File → Invalidate Caches
  • 编码乱码:Settings → File Encodings 设为 UTF-8
第 1 / 25 节