Maven Wrapper是受到Gradle Wrapper的启发而来的。它使Maven的一些配置 wrap 到项目里面,同时赋予了项目使用执行Maven版本的能力。
mvn -N io.takari:maven:0.7.6:wrapper
执行后,会在项目跟路径下生成mvnw,mvnw.cmd两个文件 及一个 .mvn/wrapper 目录。
注:
- 参数N(non-recursive)是指不在每个子模块中生成文件,只在当前目录下生成。
- 此方式需要提前安装Maven
方式二:从别的项目中将mvnw和mvnw.cmd文件以及.mvn目录copy过来
copy过来后,执行任何mvnw命令都会先下载Maven环境。
maven环境都会下载到${home}/.m2/dist
目录下。
如果需要修改Maven版本,只需要修改项目下的 .mvn/wrapper/maven-warper.properties文件即可:
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.1/apache-maven-3.6.1-bin.zip
mvnw会在每次执行命令时检测${home}/.m2/wrapper/dists
目录下是否有maven-wrapper.properties中指定Maven版本,如果没有就自动下载。
和使用mvn
指令一样,只需要将Maven命令中的mvn
替换成./mvnw
即可。例如以前运行的mvn clean
,现在运行./mvnw clean
就可以了。
windown系统下还可以使用
.\mvnw
或.\mvnw.cmd
通常我们都会使用自己的私服,还会将一些通用的profile配置到settings.xml文件中。
在使用maven wrapper时,settings.xml只有放在 ${home}/.m2/
目录下才会起效。
在项目的.mvn/wrapper
目录下增加 jvm.config
文件,通过配置该文件指定maven执行时如何使用jvm。例如:
-Xmx4G -Xms2G -Duser.timezone=GMT+08
此功能一般用不上。
站在Maven3发展多年后的今天,对一个企业内部研发团队来说,除了 可以不安装maven+不用配置path 能给研发提供帮助外,其他功能感觉意义不大。
综上,如果要是用mvnw
,建议只在研发本地使用,在统一的构建环境中仍使用mvn
。