What is the purpose of mvnw and mvnw.cmd files?
当我创建一个Spring Boot应用程序时,我可以在项目的根目录中看到
这些文件来自Maven包装器。它的工作方式类似于Gradle包装器。
这使您可以运行Maven项目,而无需在路径上安装Maven和安装Maven。如果找不到正确的Maven版本,它将下载正确版本(据我所知,默认情况下位于您的用户主目录中)。
要创建或更新所有必需的Maven包装器文件,请执行以下命令:
1 | mvn -N io.takari:maven:wrapper |
要使用其他版本的maven,可以如下指定版本:
1 | mvn -N io.takari:maven:wrapper -Dmaven=3.3.3 |
这两个命令都需要在
命令
在每个项目的
1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip |
要更新或更改Maven版本,请调用以下命令(对于多模块项目,请记住关于
1 | ./mvnw io.takari:maven:wrapper -Dmaven=3.3.9 |
或只是手动修改
要使用Maven从头开始生成包装器(您需要在
1 | mvn io.takari:maven:wrapper -Dmaven=3.3.9 |
对于需要特定版本的Maven的项目(或根本不想安装Maven的用户),Maven包装器是绝佳的选择。无需在操作系统中安装多个版本,只需使用特定于项目的包装器脚本即可。
mvnw:这是一个可执行的Unix shell脚本,用于代替完全安装的Maven
mvnw.cmd:适用于Windows环境
用例
包装程序应与其他操作系统配合使用,例如:
- 的Linux
- OSX
- 视窗
- 的Solaris
之后,我们可以针对Unix系统执行以下目标:
1 | ./mvnw clean install |
并为批处理使用以下命令:
1 | ./mvnw.cmd clean install |
如果包装属性中没有指定的Maven,则会将其下载并安装在系统的文件夹
Maven包装器插件
Maven Wrapper插件可在一个简单的Spring Boot项目中进行自动安装。
首先,我们需要进入项目的主文件夹并运行以下命令:
1 | mvn -N io.takari:maven:wrapper |
我们还可以指定Maven的版本:
1 | mvn -N io.takari:maven:wrapper -Dmaven=3.5.2 |
选项-N表示–non-recursive,因此包装器将仅应用于当前目录的主项目,而不应用于任何子模块。
到目前为止,最好的选择是使用Maven容器作为构建器工具。像这样的
1 2 3 4 5 6 7 | #!/bin/bash docker run --rm -ti \\ -v $(pwd):/opt/app \\ -w /opt/app \\ -e TERM=xterm \\ -v $HOME/.m2:/root/.m2 \\ maven mvn"$@" |