Maven 在 Mac OSX Mavericks 中找不到

84
在将我的Mac OSX 10.8升级到10.9后,/usr/share路径下找不到Maven,但它已经安装在10.8中。
当我尝试运行这个命令:
$ maven -version

我得到了这个结果

-bash:mvn:command not found

但它在10.8上运行良好?有任何想法吗?

8个回答

77

在Mac OS X 10.9上,默认情况下不再安装Maven。您需要自己安装它,例如使用Homebrew

使用Homebrew安装Maven的命令是 brew install maven


3
是的,我在谷歌上搜索了一下,并找到了一个有价值的教程 http://freddy.cellcore.org/post/64860247445/osx-10-9-mavericks-bash-mvn-command-not-found。无论如何,感谢你的帮助... 祝编码愉快 :) - Sahil Mahajan
2
非常好的答案,谢谢。只有两个东西对我来说还缺失了(在网上找到了它们)。 你需要从brew运行的命令是:brew install maven 要安装brew,请运行:ruby -e“$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” - Asaf Manassen

73

如果您不想安装Homebrew(或任何其他软件包管理器)仅为安装Maven,您可以从它们的网站上获取二进制文件:

http://maven.apache.org/download.cgi

将内容提取到一个文件夹中(例如:/Applications/apache-maven-3.1.1),并使用以下命令:

$ tar -xvf apache-maven-3.1.1-bin.tar.gz

最后,使用任何文本编辑器来调整您的~/.bash_profile以包含以下内容。

export M2_HOME=/Applications/apache-maven-3.1.1
export PATH=$PATH:$M2_HOME/bin
重新启动终端并使用以下命令进行测试:$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 17:22:22+0200)
Maven home: /Applications/apache-maven-3.1.1
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: de_DE, platform encoding: MacRoman
OS name: "mac os x", version: "10.9", arch: "x86_64", family: "mac"

你可以尝试输出路径 echo $PATH - Maven 文件夹是否已包含? - Philipp Kyeck
2
我必须在能够从/Applications/..文件夹中干净地运行maven之前使用sudo。我发现结合http://nofluffjuststuff.com/blog/demian_neidetcher/2013/01/maven_3_maven_2_mixup_on_mac和http://www.journaldev.com/2348/how-to-install-maven-on-mac-os-x-mavericks-10-9的方法帮助我解决了困境。 - JulianHarty
我不得不添加整个M2_HOME目录,例如:export M2_HOME=/Users/km/Applications/apache-maven-3.3.9。同时确保您退出并重新启动终端。 - user358591

59
brew install maven
请确保您已安装最新版本的 Xcode 和命令行工具。
xcode-select --install

尝试过了,现在出现了“Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/plexus/classworlds/launcher/Launcher”的错误 :( - Graham Lea
1
在网络上找到了一个建议,问题可能是设置了M2_HOME。但我却无法找到它被设置在哪里,但将unset M2_HOME放入.bashrc中,则解决了这个问题。 - Graham Lea
1
太棒了,'xcode-select --install' 这个命令帮我解决了一个问题,就是在升级到Mavericks之后,我通过homebrew安装的东西(如mongo、redis等)都没有出现在我的路径中。 - Vasil Daskalopoulos
这基本上是这里唯一未来可靠的解决方案,它总是提供最新版本。 - Steven McConnon

18
  1. 这里下载Maven。
  2. 将刚才下载的tar.gz文件解压到所需位置(例如:/Users/admin/Maven)。
  3. 打开终端。
  4. 输入"cd",跳转到您的主目录。
  5. 输入"touch .bash_profile"。
  6. 输入"open -e .bash_profile"打开文本编辑器中的.bash_profile文件。
  7. 在文本编辑器中输入以下内容:

alias mvn='/[Your file location]/apache-maven-x.x.x/bin/mvn'
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdkx.x.x_xx.jdk/Contents/Home/

请确保填写所需的数据(例如您的文件位置和版本号)。

  1. 保存更改
  2. 输入 ". .bash_profile" 以重新加载 .bash_profile 并更新添加的任何函数。(*确保用一个空格分隔点)。
  3. 输入 mvn -version

如果成功,您应该会看到以下内容:

Apache Maven 3.1.1
Maven home: /Users/admin/Maven/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.9.1", arch: "x86_64", family: "mac"


在升级到OSX Mavericks后,使用brew遇到了问题。这种方法对我很有效。谢谢。 - thisisananth
这不是我猜想的完整解决方案。 - Jarvis

11

这个解决方案看起来很长,但实际上并不复杂。我包含了许多示例以确保一切都清晰易懂。在Mavericks操作系统中对我有效。

注意:我合并和编辑了一些上面显示的答案,添加了一些示例和格式,并发布了结果,因此大部分功劳归原始帖子的创建者。

  1. 这里 下载Maven。

  2. 打开终端。

  3. 将你刚下载的文件提取到你想要的位置,可以手动提取,也可以在终端中输入以下命令(填写所需数据):

    mv [你的文件名] [目标位置]/ tar -xvf [你的文件名]

    例如,如果我们的文件名为 "apache-maven-3.2.1-bin.tar"(Maven 版本3.2.1),并且我们想要将其定位在 "/Applications" 目录下,则应在终端中输入以下内容:

    mv apache-maven-3.2.1-bin.tar /Applications/
    tar -xvf apache-maven-3.2.1-bin.tar
    
  4. 如果您的计算机上没有安装JDK(Java开发工具包),请安装一个。

  5. 在终端中键入"java -version"。您应该看到类似于以下内容:

  6. java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

    记住你的Java版本(例如,1.8.0)。

  7. 输入 "cd ~/" 进入您的主文件夹。

  8. 输入 "touch .bash_profile"。

  9. 输入 "open -e .bash_profile" 打开TextEdit中的 .bash_profile。

  10. 在TextEdit中输入以下内容(复制所有内容并替换所需数据):

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk[您的Java版本].jdk/Contents/Home export M2_HOME=[您的文件位置]/apache-maven-[您的Maven版本]/ export PATH=$PATH:$M2_HOME/bin alias mvn='$M2_HOME/bin/mvn'

    例如,在我们的例子中,我们将使用步骤5获得的值 "1.8.0" 替换 "[您的Java版本]",将步骤3中用作"目标位置"的值 "/Applications" 替换为 "[您的文件位置]" ,并将观察到的Maven版本 "3.2.1" 替换为 "[您的Maven版本]",从而生成以下代码:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
    export M2_HOME=/Applications/apache-maven-3.2.1/
    export PATH=$PATH:$M2_HOME/bin
    alias mvn='$M2_HOME/bin/mvn'
    
  11. 保存你的更改。

  12. 输入 "source .bash_profile" 来重新加载 .bash_profile 并更新您添加的任何函数。

  13. 输入 mvn -version。如果成功,您应该会看到以下内容:

    Apache Maven [您的Maven版本] ([一些奇怪的东西。不要担心这个]) Maven home: [您的文件位置]/apache-maven-[您的Maven版本] Java version: [您的Java版本], vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk[您的Java版本].jdk/Contents/Home/jre [一些其他的东西,这可能因计算机的配置和操作系统而有所不同]

    在我们的示例中,结果将是以下内容:

    Apache Maven 3.2.1 (ea8b2b07643dbb1b84b6d16e1f08391b666bc1e9; 2014-02-14T18:37:52+01:00)
    Maven home: /Applications/apache-maven-3.2.1
    Java version: 1.8.0, vendor: Oracle Corporation
    Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0</b>.jdk/Contents/Home/jre
    Default locale: es_ES, platform encoding: UTF-8
    OS name: "mac os x", version: "10.9.2", arch: "x86_64", family: "mac"
    

这是完整的解决方案。 - Jarvis

1
对我来说,尝试上述技术确实起作用了,所以我打开了.bash_profile文件,并在新行中添加了以下内容以使用短命令连接到maven:
alias mvn=/opt/apache-maven-3.6.3/bin/mvn

重新启动终端并输入 mvn clean install 命令。


0

我不能评论pkyeck的回复,因为它对包括我在内的一些人没有起作用,所以我在他的回复后面添加了一个单独的评论:

如果.bash_profile没有起作用,请尝试在.profile文件中添加他提到的变量。它位于您的主目录中,然后重新启动终端。这对我有用。

显然的阻碍是您无法编辑.profile文件,使用"touch"检查访问权限和"sudo"命令获取访问权限

  1. touch .profile

  2. vi .profile

这里是pkyeck建议我们添加的变量,通过编辑.profile对我有效:

  1. export M2_HOME=/apache-maven-3.3.3

  2. export PATH=$PATH:$M2_HOME/bin


0

对我来说,我安装了AdoptOpenJDK 8,而不是SE JDK 8。因此它无法识别JAVA_HOME或mvn命令。

检查你的java_home /usr/libexec/java_home -V 如果不同,请使用JAVA SE SDK。

然后按照上述步骤安装maven并再次检查。


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