mvn 命令未被识别为内部或外部命令

87

我收到了"mvn 命令未被识别为内部或外部命令"的错误提示。

我设置了M2_HOME、JAVA_HOME,并将%M2_HOME%/bin添加到path环境变量中。它们都是系统变量。但是我仍然遇到相同的问题。

回显这些变量显示了正确的路径。

Maven路径: C:\apache-maven-3.1.0\apache-maven-3.1.0

M2_HOME: C:\apache-maven-3.1.0\apache-maven-3.1.0

PATH: 其他东西,C:\Program Files (x86)\Java\jdk1.7.0_40\bin,C:\apache-maven-3.1.0\apache-maven-3.1.0\bin

我已经重启电脑两次。


似乎Maven安装没有正确完成。 - Hemant Metalia
我下载了适用于Windows 7 32位的apache-maven-3.1.0-bin.zip并将其解压到我的位置。然后我设置了我的变量。我需要做些什么吗?如果我导航到Maven bin文件夹,然后按下mvn,那么它可以正常工作。 - saurav
7
按照这个教程安装Maven:https://www.mkyong.com/maven/how-to-install-maven-in-windows/。 - Pavindu
2
请确保下载Maven的二进制文件而不是源代码 - KailiC
以前可能还能用,但现在已经不行了。按照以下步骤可以防止Windows无法识别'mvn'命令。 - Yannick Mussche
29个回答

87

右键单击“我的电脑” >> “属性” >> “高级系统设置” >> 将显示系统属性窗口 在“高级”下选择>>“环境变量”

单击新建以设置环境变量

变量名称:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_121

变量名称:M2 变量值:%M2_HOME%\bin

变量名称:M2_HOME 变量值:C:\Program Files\Apache Software Foundation\apache-maven-3.5.0

变量名称:Path 变量值:%M2_HOME%\bin

然后单击“确定”,“确定”,“确定”。 现在重新启动命令提示符并使用“mvn -version”检查以验证mvn正在运行,您还可以重新启动系统。

现在应该正常工作了。


我想补充一下,您可以在路径变量值中的最后一步中添加M2,而不是%M2_HOME%\bin。 - vicangel
3
2022年后,这个不再有效。没有'C:\Program Files\Apache Software Foundation'文件夹。 - user1034912
我想知道这些变量M2、M2_HOME是否有任何文档记录。 - BabyishTank
@user1034912,我猜这一步应该读作“你的Maven安装在哪个路径下就填哪个路径”。对于这种软件,例如我会安装在一个叫做C:\Not Program Files\的地方。 - Guilherme Taffarel Bergamin
以前可能还能用,但现在已经不行了。按照以下步骤可以防止Windows无法识别'mvn'命令。 - Yannick Mussche

41
重启你的机器,在设置好你的M2_HOME(指向你的Maven basedir,而不是bin目录)和PATH(PATH=%M2_HOME%\bin;%PATH%)之后。
然后执行以下操作:
dir "%M2_HOME%\bin\mvn*

如果有一个.bat文件,它应该在Windows下工作,因为它似乎找到了它。如果没有一个,那么你的路径不正确,你需要确保你的%PATH%变量真正指向正确的Maven路径。
确保你使用适合你的操作系统的斜杠。在Windows下,它们是\。

谢谢Carl...我找到了我的批处理文件,但mvn仍然无法识别...我还能做什么? - saurav
1
展示一下你的Maven路径,M2_HOMEPATH变量,并告诉我们你是否重启了计算机。 - carlspring
Maven路径:C:\apache-maven-3.1.0\apache-maven-3.1.0 M2_HOME:C:\apache-maven-3.1.0\apache-maven-3.1.0 PATH:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\Program Files (x86)\Microsoft Application Virtualization Client;c:\Program Files (x86)\Open Text\View\bin;%systemroot%\System32\WindowsPowerShell\v1.0;C:\Program Files\ThinkPad\Bluetooth Software;C:\Program Files\ThinkPad\Bluetooth Software\syswow64;C:\Program Files\Perforce,C:\Program Files (x86)\Java\jdk1.7.0_40\bin,C:\apache-maven-3.1.0\apache-maven-3.1.0\bin,我已经重启了电脑两次。 - saurav
6
你的问题是因为使用了逗号","而不是分号";"。此外,应该在PATH的最前面添加M2_HOME,而不是在末尾追加,即它应该位于路径的开头位置。 - carlspring
非常感谢Carlspring...不知道为什么会出现','...';'解决了问题。 - saurav
显示剩余2条评论

29
将整个Maven路径写入环境变量PATH中。

示例:

C:\Program Files\apache-maven-3.2.3\bin;

我的PATH变量没有正确读取%M2%%M2_HOME%\bin,因此我将完整路径写入了PATH变量。

已解决。


这个有效(Windows 11) - undefined

17

以下是我的解决方法:

1-从 https://maven.apache.org/download.cgi 下载apache-maven-3.3.9-bin.tar.gz文件。

2-将文件夹复制到c:\programfiles下。

3-设置变量如下: M2_HOME ----- C:\Program Files\apache-maven-3.3.9 M2 ----- C:\Program Files\apache-maven-3.3.9

添加路径变量: ;C:\Program Files\apache-maven-3.3.9\bin

然后以系统管理员身份运行cmd。

这样就可以了。


6

我也遇到了同样的问题,即使在环境变量中添加了路径并以普通用户身份在命令提示符下运行,问题仍然存在。

后来我尝试在命令提示符下以"管理员身份运行",这样就能够下载与该项目相关的所有软件包。


6

Windows 10 -

  1. 添加新变量"M2_HOME" -

图片描述

  1. 更新变量"path" - 图片描述

  2. 在CMD中验证 - 图片描述


4
你是否试图在系统变量中引用用户变量?尝试echo %path%,M2应该已被完全展开,显示到你的Maven目录的文件路径。如果没有展开,那么这就是问题所在。
要解决它,你应该创建一个名为PATH的用户变量,并将你的%M2%引用添加到其中。

%path% 中的括号是什么意思? - CodyBugstein
@CodyBugstein 这意味着它是一个变量。 - user11006286

4
以“以管理员身份运行”方式打开命令提示符并尝试。

4
如果您已经设置了JAVA_HOMEM2_HOME(或者像我一样是MAVEN_HOME)环境变量,并且将\bin文件夹添加到了Path环境变量中,但仍然无法正常工作,则可以尝试此解决方法。
请确保您按正确顺序设置了变量,即%JAVA_HOME%\bin文件夹应该在%MAVEN_HOME%\bin之前,就像所示的图片一样。 right order of env variables wrong order of env variables

3

我有一个蠢问题,但其他人可能也会遇到。当我尝试输入 ./mvnw clean package 时,我遇到了同样的错误,后来发现我需要将其稍微改成 .\mvnw clean package,然后我就开心地生活下去了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接