Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven mvnw和mvnw.cmd文件的用途是什么?_Maven_Spring Boot - Fatal编程技术网

Maven mvnw和mvnw.cmd文件的用途是什么?

Maven mvnw和mvnw.cmd文件的用途是什么?,maven,spring-boot,Maven,Spring Boot,当我创建一个Spring启动应用程序时,我可以在项目的根目录中看到mvnw和mvnw.cmd文件。这两个文件的用途是什么?这些文件来自。它的工作原理类似于 这允许您运行Maven项目,而无需在路径上安装和显示Maven。如果找不到它,它将下载正确的Maven版本(据我所知,默认情况下是在您的用户主目录中) mvnw文件适用于Linux(bash),而mvnw.cmd文件适用于Windows环境 要创建或更新所有必要的Maven包装文件,请执行以下命令: mvn -N io.takari:mav

当我创建一个Spring启动应用程序时,我可以在项目的根目录中看到
mvnw
mvnw.cmd
文件。这两个文件的用途是什么?

这些文件来自。它的工作原理类似于

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

mvnw
文件适用于Linux(bash),而
mvnw.cmd
文件适用于Windows环境


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

mvn -N io.takari:maven:wrapper
要使用不同版本的maven,可以按如下方式指定版本:

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

这两个命令都要求maven打开
PATH
(将maven
bin的路径添加到系统变量上的
PATH
)如果您的项目中已经有mvnw,您可以在命令中使用
/mvnw
而不是
mvn

命令
mvnw
使用默认情况下在第一次使用时下载到
~/.m2/wrapper
的Maven

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

distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip
要更新或更改Maven版本,请调用以下命令(记住关于多模块项目的
--非递归
):

或者手动修改
.mvn/wrapper/maven wrapper.properties

要使用Maven从头开始生成包装器(您需要让它已经在
PATH
run中运行:

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。

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

mvnw.cmd:用于Windows环境


用例

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

  • Linux
  • OSX
  • 窗户
  • Solaris
之后,我们可以在Unix系统上运行以下目标:

./mvnw clean install
以及以下批处理命令:

./mvnw.cmd clean install
如果包装器属性中没有指定的Maven,它将被下载并安装在系统的文件夹
$USER\u HOME/.m2/wrapper/dists


Maven包装器插件

在一个简单的Spring Boot项目中进行自动安装

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

mvn -N io.takari:maven:wrapper
我们还可以指定Maven的版本:

mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
选项-N表示–非递归,因此包装器将只应用于当前目录的主项目,而不应用于任何子模块



资料来源1(进一步阅读):

你的答案非常有用。我查看了maven包装器文档。我使用了
mvn
命令进行maven操作,尽管我可以使用
/mvnw
进行相同的操作。谢谢你的回答。你能解释一下这是什么时候生成的吗,比如你最初创建项目的时候?当你你对你的pom做了一些更改,比如添加删除依赖项/插件?还有,你是否应该添加/提交mvnw.cmd文件?当然可以。它允许你快速运行你的maven构建,而不需要额外安装maven或让它在PATH上运行。非常感谢你的回答,这非常有帮助。你能告诉我们一些maven se的可移植性吗当我们以这种方式工作时,是否需要文件?Saludos,再次感谢。这并没有回答OP问题,它只是建议了一个替代方法maven包装器的基本思想是为该项目声明正确的maven版本。另外一个好处是避免了手动安装maven的需要。您的方法不仅没有解决版本问题lem,但还需要一个本地安装的工具。还要注意的是,这会将用户自己的本地Maven存储库装载到docker实例中。通常它以root运行,因此Docked Maven实例编写的任何内容在Linux下都归root所有。这不一定是需要的。我发现do可以访问一个正确安装的nexus实例构建实例不那么痛苦,特别是当您需要可复制的构建时。(继续)老派的Jenkins设置和思维方式导致了这种情况。现代CI/CD工具的作用恰恰相反:你只需选择一个构建容器。但这只是我的观点。我并不反对投票,因为答案可能会有帮助,但它完全没有抓住OP问题的重点,你不能只引入Docker这样的复杂工具甚至没有解释它是什么。也许你应该提到这部分文字是从
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2