Maven Logo Maven 构建工具

Java 项目依赖管理和构建自动化工具

安装流程

1

安装 JDK

2

下载 Maven

3

配置环境变量

4

配置镜像仓库

Maven 下载与安装

前置要求:需要先安装 JDK 1.8 或更高版本,并配置好 JAVA_HOME 环境变量
Maven 官方

Apache Maven 官方网站下载

  • Maven 3.9.x - 最新版本
  • Maven 3.8.x - 稳定版本
  • 完全免费开源
官方下载 GitHub
验证安装:
mvn --version
国内镜像

国内镜像加速下载

  • 清华大学开源软件镜像
  • 阿里云镜像
  • 下载速度更快
清华镜像 阿里镜像
Windows 安装步骤
1. 下载并解压

下载 Maven 压缩包(如 apache-maven-3.9.6-bin.zip),解压到合适目录,如:

C:\Program Files\Apache\maven
2. 配置环境变量

新建系统变量 MAVEN_HOME:

MAVEN_HOME = C:\Program Files\Apache\maven

编辑 Path 变量,添加:

%MAVEN_HOME%\bin
3. 验证安装

打开命令提示符,输入:

mvn --version

Maven 配置

配置国内镜像仓库

配置阿里云镜像可以大幅提升依赖下载速度

1. 找到 settings.xml 文件
  • 全局配置:%MAVEN_HOME%\conf\settings.xml
  • 用户配置:%USERPROFILE%\.m2\settings.xml(推荐)
2. 配置阿里云镜像

<mirrors> 标签内添加:

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>
3. 完整镜像配置(推荐)
<mirrors>
    <!-- 阿里云镜像 -->
    <mirror>
        <id>aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Aliyun Maven Central</name>
        <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
    
    <!-- 华为云镜像 -->
    <mirror>
        <id>huaweicloud</id>
        <mirrorOf>central</mirrorOf>
        <name>Huawei Cloud Maven</name>
        <url>https://repo.huaweicloud.com/repository/maven/</url>
    </mirror>
</mirrors>
4. 配置本地仓库路径(可选)

修改默认仓库位置(默认在 %USERPROFILE%\.m2\repository):

<localRepository>D:\MavenRepository</localRepository>

常用 Maven 命令

构建命令
# 清理项目
mvn clean

# 编译项目
mvn compile

# 编译测试代码
mvn test-compile

# 运行测试
mvn test

# 打包项目
mvn package

# 安装到本地仓库
mvn install

# 清理并打包
mvn clean package
高级命令
# 跳过测试打包
mvn package -DskipTests

# 跳过测试和执行测试
mvn package -Dmaven.test.skip=true

# 指定构建环境
mvn package -P prod

# 更新依赖
mvn -U clean package

# 查看依赖树
mvn dependency:tree

# 查看依赖详情
mvn dependency:resolve
生命周期说明

Maven 有三个独立的构建生命周期:

  • default(默认):处理项目部署,包含 compile、test、package、install 等
  • clean:清理项目,删除 target 目录
  • site:生成项目站点文档

执行 mvn package 时,会自动执行之前的所有阶段(validate → compile → test → package)

pom.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<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>my-project</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    
    <!-- 项目信息 -->
    <name>My Project</name>
    <description>Project Description</description>
    
</project>

<dependencies>
    <!-- JUnit 测试依赖 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
    
    <!-- Spring Boot 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>3.2.0</version>
    </dependency>
    
    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.30</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

依赖作用域(scope):

  • compile:默认值,编译和运行都需要
  • test:仅测试时使用
  • provided:由运行环境提供(如 Servlet API)
  • runtime:运行时使用

<build>
    <plugins>
        <!-- 编译插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>17</source>
                <target>17</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        
        <!-- 打包插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.3.0</version>
        </plugin>
        
        <!-- Spring Boot 插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>3.2.0</version>
        </plugin>
    </plugins>
</build>

IDE 集成

IntelliJ IDEA

内置 Maven 支持,无需额外配置

  • 自动识别 pom.xml
  • 内置 Maven 插件
  • 可视化依赖管理
配置 Maven:
Settings → Build, Execution, Deployment
    → Build Tools → Maven
    → 配置 Maven home directory
    → 配置 User settings file
Eclipse

需要安装 m2e 插件

  • Eclipse IDE for Java EE 已内置
  • 右键项目 → Configure → Convert to Maven
  • 自动下载依赖
配置 Maven:
Window → Preferences → Maven
    → 配置 Maven 安装目录
    → 配置 settings.xml
VS Code

安装 Java 扩展包

  • 安装 "Extension Pack for Java"
  • 自动支持 Maven 项目
  • 轻量级选择
必备扩展:
  • Language Support for Java
  • Maven for Java
  • Project Manager for Java
NetBeans

内置 Maven 支持

  • 开箱即用
  • 新建项目时选择 Maven
  • 免费开源
配置 Maven:
Tools → Options → Java
    → Maven → 配置 Maven Home

常见问题与注意事项

解决方案:

  1. 检查网络连接,确保能访问中央仓库
  2. 配置国内镜像(见上方配置部分)
  3. 清理本地缓存后重新下载:
    # 删除本地仓库中对应的依赖目录
    # 或使用命令
    mvn dependency:purge-local-repository
  4. 检查 pom.xml 中的依赖坐标是否正确

查看依赖树:

mvn dependency:tree -Dverbose

解决方案:

  1. 使用 <dependencyManagement> 统一管理版本
  2. 使用 <exclusions> 排除传递依赖
  3. 遵循"最短路径优先"原则
<dependency>
    <groupId>com.example</groupId>
    <artifactId>example-lib</artifactId>
    <version>1.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>conflict-lib</groupId>
            <artifactId>conflict-artifact</artifactId>
        </exclusion>
    </exclusions>
</dependency>

优化建议:

  1. 配置国内镜像仓库(最重要)
  2. 使用离线模式(依赖已下载时):
    mvn package -o
  3. 增加 Maven 堆内存:
    # 设置 MAVEN_OPTS 环境变量
    export MAVEN_OPTS="-Xmx1024m"
  4. 跳过不必要的步骤:
    mvn package -DskipTests -Dmaven.javadoc.skip=true

使用 Maven Profile 实现多环境配置:

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <environment>development</environment>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <environment>production</environment>
        </properties>
    </profile>
</profiles>

激活 Profile:

mvn package -P dev
mvn package -P prod

学习资源

官方文档

最权威的学习资料

Maven 官方指南
仓库搜索

查找依赖坐标

MVN Repository
入门教程

快速上手指南

Getting Started