在 OSX Mavrerick 中找不到 mvn 命令

Posted

技术标签:

【中文标题】在 OSX Mavrerick 中找不到 mvn 命令【英文标题】:mvn command not found in OSX Mavrerick 【发布时间】:2014-01-28 12:20:55 【问题描述】:

在将其标记为重复之前,我浏览了这些帖子,但没有任何帮助。

'mvn' is not recognized as an internal or external command, Getting -bash: mvn: command not found, Can't access mvn command from command line?

有些是特定于 Windows 的,没有帮助。其中一些在 Mac OS X 上提出了建议,我尝试过但没有帮助。

我尝试过的(这正是Maven 所建议的):

解压分发包,即 apache-maven-3.1.1-bin.tar.gz 到您希望安装 Maven 3.1.1 的目录。这些说明 假设您选择了 /usr/local/apache-maven。子目录 apache-maven-3.1.1 将从存档中创建。在一个命令中 终端,添加 M2_HOME 环境变量,例如出口 M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1。添加 M2 环境变量,例如导出 M2=$M2_HOME/bin。可选:添加 MAVEN_OPTS 环境变量来指定 JVM 属性,例如出口 MAVEN_OPTS="-Xms256m -Xmx512m"。可以使用这个环境变量 为 Maven 提供额外的选项。将 M2 环境变量添加到您的 路径,例如导出路径=$M2:$PATH。确保 JAVA_HOME 设置为 JDK 的位置,例如导出 JAVA_HOME=/usr/java/jdk1.5.0_02 并且 $JAVA_HOME/bin 在您的 PATH 环境变量中。运行 mvn --version 以验证它是否已正确安装。

我看到在我用于安装的terminal 上,它工作正常。我没有这个问题。但是当我尝试使用新的terminal 时,我得到了command not found

我还添加了export PATH=$M2 到我的.bashrc,我添加了source,然后重新启动了终端,仍然没有帮助。

有人可以建议如何在终端的所有会话中使用它吗?

谢谢

【问题讨论】:

如果你是osx小牛,我相信mvn已经被mvn3取代了。 @ChristianF:是的,我在小牛队,但我尝试了mvn3,仍然得到command not found。问题是它适用于用于安装的终端(在遵循 maven 指出的上述步骤之后),但不能跨终端继承 尝试将路径添加到 .bash_profile 然后运行命令:“source .bash_profile”(不带“)以刷新它或打开一个新终端 @tshenolo:在尝试 bashrc 之前,我最初尝试过这个。现在我又做了一次,但它仍然没有帮助。这是我的全部bash_profiePATH=$PATH:$HOME/bin export PATH export PATH=$M2:$PATH 这可能会有所帮助:***.com/questions/9134712/setting-up-maven-3-properly 【参考方案1】:

如果这些可能有帮助,请尝试以下操作:

由于您的安装在您安装的终端上运行,因此您所做的所有exports 都在current bash and its child process 上运行。但不会生成新的terminals

env 如果会话关闭,变量会丢失;使用.bash_profile,您可以使其在所有会话中可用,因为当bash 会话开始时,它会“运行”它的.bashrc and .bash_profile

现在按照以下步骤操作,看看是否有帮助:

    在工作的终端上输入env | grep M2_HOME。这应该给出类似的东西

    M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1

    输入 env | grep JAVA_HOME 应该是这样的:

    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

现在您有了M2_HOMEJAVA_HOME 的路径。

如果您只执行ls /usr/local/apache-maven/apache-maven-3.1.1/bin,您将在那里看到mvn 二进制文件。 你现在要做的就是每次使用 PATH 指向这个位置。因为bash会搜索PATH中提到的所有目录路径,所以会找到mvn

    现在打开.bash_profile,如果你没有就创建一个

    vi ~/.bash_profile

添加以下内容:

#set JAVA_HOME
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home
export JAVA_HOME


M2_HOME=/usr/local/apache-maven/apache-maven-3.1.1
export M2_HOME

PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
export PATH

    保存文件并输入source ~/.bash_profile。此步骤执行.bash_profile 文件中的命令,您现在可以开始了。

    打开一个新终端并输入 mvn 应该可以工作。

【讨论】:

谢谢。升级到 Yosemite 10.10.1 后,我浪费了 2 个小时试图解决这个问题。这有效! @RicardoGonzales:你需要创建/Users/YOURNAME/.bash_profile。只需打开终端,输入cd && vi .bash_profile 执行 'source .bash_profile' 后一切正常,但是当我重新启动计算机时,找不到更多 mvn 命令【参考方案2】:

上面的解决方案很好,但它们需要 ~/.bash_profile。 /usr/local/bin 已经在 $PATH 中,可以通过 echo $PATH 进行确认。 Download maven 并运行以下命令 -

$ cd ~/Downloads
$ tar xvf apache-maven-3.5.3-bin.tar.gz
$ mv apache-maven-3.5.3 /usr/local/
$ cd /usr/local/bin
$ sudo ln -s ../apache-maven-3.5.3/bin/mvn mvn
$ mvn -version
$ which mvn

注意: apache maven 的版本就是您要下载的版本。

【讨论】:

即使在定义了 $M2_HOME、$M2 变量并将 bin 路径添加到 $PATH 变量并将上述所有内容添加到 .bash_profile 之后,我也无法运行 mvn 命令。我得到许可被拒绝。如果我尝试在 sudo 之后运行,我再次找不到命令。我检查了我没有在根模式下的 $PATH 变量中定义 mvc 路径。我也需要在这里添加它吗?我找不到根的 .bash_profile。 @SandeepanNath 此设置不需要 $M2_HOME。还有其他使用 $M2_HOME 的答案。 这在已安装 XCode 命令行工具的 OSX Catalina 上运行良好。在为最新的 maven 下载二进制 tar.gz 存档后,我唯一需要更改的就是使用 sudo 来执行 mv 命令,当然还要用我实际下载的新版本替换版本号。在使用 maven 之前,它甚至不需要我重新启动终端。 如果 .bash_profile 方法不起作用,这将起作用!经过验证和测试。谢谢 这应该是公认的答案。【参考方案3】:

我遇到了同样的问题,我尝试了以上所有方法,但没有解决我的问题。幸运的是,我通过这种方式解决了这个问题:

echo $SHELL

输出

/bin/zsh
OR 
/bin/bash

If it showing "bash" in output. You have to add env properties in .bashrc file (.bash_profile i did not tried, you can try) or else
It is showing 'zsh' in output. You have to add env properties in .zshrc file, if not exist already you create one no issue.

【讨论】:

我不知道为什么这个答案不被接受。 @KrishnaGond 那是因为它没有说明要添加哪些属性,也没有说明 .zshrc 或 .bashrc 的位置。 你救我!谢谢!它在 mac big sur (zsh) 上运行良好 您可以在以下路径找到这些文件:~/.zshrc 或 ~/.bashrc【参考方案4】:

这对我有用。

首先我检查了 M2_HOME 变量是否设置为env | grep M2_HOME。我什么都没有

我知道我在“/usr/local/apache-maven-3.2.2”文件夹中安装了 Maven,因此执行以下 3 个步骤为我解决了问题:

    设置 M2_HOME 环境变量

M2_HOME=/usr/local/apache-maven-3.2.2

    设置 M2 环境变量

M2=$M2_HOME/bin

    更新路径

export PATH=$M2:$PATH

如上所述,如果您希望自动执行该序列,可以将该序列保存在 .bash_profile 文件中。

【讨论】:

当新终端打开时,这将再次被清除【参考方案5】:

安装maven的步骤:

    从http://maven.apache.org/download.cgi下载maven文件 $tar xvf apache-maven-3.5.4-bin.tar.gz 将 apache 文件夹复制到所需位置 $cp -R apache-maven-3.5.4 /Users/locals 进入apache目录$cd /Users/locals/apache-maven-3.5.4/ 创建 .bash_profile $vim ~/.bash_profile 写这两条命令: 导出 M2_HOME=/Users/manisha/apache-maven-3.5.4 导出 PATH=$PATH:$M2_HOME/bin 7 保存退出vim :wq! 重启终端并输入mvn -version

【讨论】:

第6步之后,别忘了做"source ~/.bash_profile"【参考方案6】:

我按照头脑风暴的指示,仍然没有得到不同的结果 - 任何新的终端窗口都无法识别 mvn 命令。我不知道为什么,但是将声明分解成更小的块 .bash_profile 有效。据我所知,我基本上在做和他一样的事情。这是我的 .bash_profile 中看起来不同的地方:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home
export PATH JAVA_HOME
J2=$JAVA_HOME/bin
export PATH J2
M2_HOME=/usr/local/apache-maven/apache-maven-2.2.1
export PATH M2_HOME
M2=$M2_HOME/bin
export PATH M2

【讨论】:

以上是关于在 OSX Mavrerick 中找不到 mvn 命令的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter/Android 构建中找不到 protoc-3.9.2-osx

CoreData 在 OSX 框架包中找不到映射模型,但在 iOS 中可以正常工作

-bash: git: 在 lion osx 的 Xcode 4 中找不到命令

OSX CoreData:仅针对某些实体的问题:+entityForName:在此模型中找不到名为“myEntity”的实体

为啥 Aptana 3 (OS X) 在导入的项目中找不到 django 设置模块?

在 OS X 10.7 中找不到 Mysql 命令