1. 概述

Maven Wrapper 是解决多版本 Maven 管理问题的利器,特别适合需要固定 Maven 版本的项目(或者不想安装 Maven 的用户)。与其在系统中安装多个 Maven 版本,不如直接使用项目专属的 wrapper 脚本。

这篇指南将演示如何为现有 Maven 项目配置 Maven Wrapper。

2. 配置 Maven Wrapper

有两种配置方式:插件自动化安装(最简单)和手动安装

2.1 插件方式

以 Spring Boot 项目为例,使用 Maven Wrapper 插件 自动安装:

mvn -N wrapper:wrapper

指定 Maven 版本:

mvn -N wrapper:wrapper -Dmaven=3.5.2

⚠️ -N 表示 --non-recursive,确保只作用于主项目而非子模块。

执行后项目将新增:

  • mvnw:Unix 系统的可执行脚本(替代完整安装的 Maven)
  • mvnw.cmd:Windows 版本的脚本
  • .mvn 目录:存放 Wrapper Java 库和配置文件

2.2 手动方式

从其他项目复制上述文件到当前项目根目录,然后修改 .mvn/wrapper/maven-wrapper.properties 指定版本:

distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip

运行时将自动下载并使用 3.5.2 版本。

3. 使用场景

Wrapper 跨平台兼容:

  • Linux
  • OSX
  • Windows
  • Solaris

Unix 系统执行:

./mvnw clean install

Windows 执行:

mvnw.cmd clean install

关键机制:若系统中没有指定版本的 Maven,会自动下载到 $USER_HOME/.m2/wrapper/dists 目录。

运行 Spring Boot 项目示例:

./mvnw spring-boot:run

输出与完整安装的 Maven 完全一致:

mvn wrapper springboot 运行示例

❓ 是否应该把 mvnw 文件加入版本控制?
答案是:非必须但推荐。加入后能让克隆项目的人免装 Maven 直接构建。

4. 总结

本文介绍了 Maven Wrapper 的配置和使用方式。通过固定项目 Maven 版本,能有效避免"在我机器上能跑"的尴尬,是团队协作的实用工具。

完整示例代码见 GitHub 仓库


原始标题:A Quick Guide to Maven Wrapper