找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2059

积分

0

好友

281

主题
发表于 昨天 19:23 | 查看: 3| 回复: 0

前言

相信不少同学在 GitHub 上克隆 Maven 项目时,都会看到一个 mvnw/mvnw.cmd(下文统称 mvnw)脚本文件。它到底从哪里来?又解决了什么问题?本文就围绕这两个问题,把 mvnw 的来源与用法讲清楚。


mvnw 是什么?为什么 Maven 项目会带它?

mvnw 就绕不开一个 Maven 工具:Maven Wrapper

mvnw 正是通过 Maven Wrapper 生成的脚本,用来为项目构造构建时依赖的 Maven 环境。更直白一点说:

  • 它让项目使用者的 Maven 环境尽量与项目开发者的 Maven 环境保持一致
  • 对使用者更友好:构建项目时不需要提前全局安装 Maven,直接执行 mvnw 即可(脚本会按配置下载并使用指定版本的 Maven)

如果你经常维护团队项目、或者需要在 CI 环境里稳定构建,那么在 Maven 项目中引入 Wrapper 往往能减少很多“环境不一致”的问题。


如何生成 mvnw:Maven Wrapper 命令

Maven Wrapper 本质上依赖 Maven 项目本身,因此创建 mvnw 的命令如下(用于在项目中生成 Wrapper 相关文件):

mvn wrapper:wrapper -Dtype={type} -Dmaven={version}

参数说明:

  • type 取值范围:only-scriptscriptbinsource
  • version 为 Maven 的发行版本号,可参考附录链接 apache-maven/versions

下面通过一个完整示例走一遍实际操作。


1. 示例环境

  • Ubuntu 24.04.2 LTS
  • JDK21.0.2
  • Apache Maven 3.9.8
  • IntelliJ IDEA 2025.1.3 (Community Edition)

2. 示例代码

2.1 项目结构

创建名为 maven-wrapper-example 的项目,其结构如下:

▼ 图一

Maven Wrapper与mvnw脚本:统一构建环境实践 - 图片 - 1


2.2 使用 maven-wrapper 插件生成 mvnw

进入项目目录:

cd ~/workspace/workspace3/maven-wrapper-example/

生成 mvnw

mvn wrapper:wrapper -Dscript

▼ 图二

Maven Wrapper与mvnw脚本:统一构建环境实践 - 图片 - 2

▼ 图三

Maven Wrapper与mvnw脚本:统一构建环境实践 - 图片 - 3

温馨提示

  1. 可通过 -Dmavne=version 参数指定 mvnw 脚本中 Maven 的版本号;如果不指定则默认为 mvn 命令的相同版本号;
  2. 也可通过生成的 /.mvn/wrapper/maven-wrapper.properties 文件中 distributionUrl 选项指定;
  3. 更多使用细节可参考附录链接 Maven Wrapper

2.3 执行 mvnw 脚本构建项目

执行 mvnw 脚本文件:

./mvnw package

▼ 图四

Maven Wrapper与mvnw脚本:统一构建环境实践 - 图片 - 4

温馨提示

这里的 ./mvnw package 命令可以替换成任何合法的 mvn 命令。你可以把 mvnw 当作 mvn 的直接替换,例如:mvnw cleanmvnw compile -DskipTests 等。


总结

mvnw 的核心价值在于:把 Maven 版本与构建行为“绑定”到项目里。这样无论是新同事拉代码、还是在不同机器/不同流水线环境构建,都能更接近“开箱即用”的体验,减少环境差异带来的问题。

想围绕构建工具、依赖管理、工程化实践做进一步交流,也可以到 云栈社区 继续讨论与沉淀。


附录




上一篇:Prometheus数据库监控改造:Qunar采集与智能告警
下一篇:cURL开源28年装机超100亿:为何依然难赚钱
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-16 00:35 , Processed in 0.204436 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表