当我创建Spring Boot应用程序时,我可以看到mvnw和mvnw。CMD文件在项目的根目录。这两个文件的目的是什么?


这些文件来自Maven包装器。它的工作原理类似于Gradle包装器。

这允许您运行Maven项目,而无需在路径上安装和显示Maven。如果没有找到,它会下载正确的Maven版本(据我所知,默认是在您的用户主目录中)。

mvnw文件用于Linux (bash)和mvnw. xml文件。cmd用于Windows环境。


要创建或更新所有必要的Maven Wrapper文件,执行以下命令:

mvn -N io.takari:maven:wrapper

要使用不同版本的maven,您可以如下所示指定版本:

mvn -N io.takari:maven:wrapper -Dmaven=3.3.3

这两个命令都需要maven on PATH(将maven bin的路径添加到PATH on System Variables),如果你的项目中已经有mvnw,你可以使用./mvnw来代替命令中的mvn。


命令mvnw使用Maven,缺省情况下下载到~/。M2 /包装首次使用。

Maven的URL在每个项目的.mvn/wrapper/ Maven -wrapper.properties中指定:

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

要更新或更改Maven版本,请调用以下命令(对于多模块项目,请记住—非递归):

./mvnw io.takari:maven:wrapper -Dmaven=3.3.9 

或者只是修改。mvn/wrapper/maven-wrapper。手动属性。

要使用Maven从头开始生成包装器(你需要在PATH中运行它:

mvn io.takari:maven:wrapper -Dmaven=3.3.9 

到目前为止,最好的选择是使用maven容器作为构建工具。像这样的mvn.sh脚本就足够了:

#!/bin/bash
docker run --rm -ti \
 -v $(pwd):/opt/app \
 -w /opt/app \
 -e TERM=xterm \
 -v $HOME/.m2:/root/.m2 \
 maven mvn "$@"

对于需要特定版本Maven的项目(或者根本不想安装Maven的用户),Maven Wrapper是一个极好的选择。我们可以只使用特定于项目的包装器脚本,而不是在操作系统中安装它的多个版本。

mvnw:它是一个可执行的Unix shell脚本,用于取代完全安装的Maven

mvnw。cmd:用于Windows环境


用例

包装器应该适用于不同的操作系统,例如:

Linux OSX 窗户 Solaris

之后,我们可以在Unix系统上运行我们的目标:

./mvnw clean install

Batch命令:

./mvnw.cmd clean install

如果包装器属性中没有指定的Maven,它将被下载并安装在$USER_HOME/文件夹中。系统的M2 /wrapper/dist。


Maven Wrapper插件

Maven Wrapper插件,在一个简单的Spring Boot项目中进行自动安装。

首先,我们需要进入项目的主文件夹并运行以下命令:

mvn -N io.takari:maven:wrapper

我们还可以指定Maven的版本:

mvn -N io.takari:maven:wrapper -Dmaven=3.5.2

选项-N表示-非递归,这样包装器将只应用于当前目录的主项目,而不是任何子模块。


来源1(进一步阅读):https://www.baeldung.com/maven-wrapper


简单的回答:在终端中运行Maven和Gradle,不需要手动安装。

它的例子:

./gradlew clean build
./gradlew bootRun

Maven的例子:

./mvnw clean install
./mvnw spring-boot:run

“执行任何Gradle构建的推荐方法都是借助Gradle Wrapper(简而言之就是“Wrapper”)。Wrapper是一个脚本,它调用一个已声明的Gradle版本,如果需要的话,可以预先下载它。因此,开发人员可以快速启动并运行Gradle项目,而不必遵循手动安装过程,从而为公司节省时间和金钱。”

Gradle还会添加一些与Maven文件Gradlew和Gradle.bat相对应的特定文件


在windows操作系统中,mvnw clean install用于maven的clean and install活动,mvnw Spring -boot:run用于从命令提示符运行Spring引导应用程序。

Eaxmple:

C:\SamplesSpringBoot\demo>mvnw clean install
C:\SamplesSpringBoot\demo>mvnw spring-boot:run