在我的机器上,我安装了两个Java版本:(1.6和1.7由我手动安装)。我在不同的项目中都需要他们。但对于Maven,我需要1.7,但我的Maven使用1.6 Java版本。
如何将Maven设置为使用1.7?
在我的机器上,我安装了两个Java版本:(1.6和1.7由我手动安装)。我在不同的项目中都需要他们。但对于Maven,我需要1.7,但我的Maven使用1.6 Java版本。
如何将Maven设置为使用1.7?
当前回答
最近安装了Java10,看看有什么新的和有趣的。一旦我这样做了,并尝试运行现有的项目使用java8。 令我惊讶的是,maven开始使用java10作为它的默认java版本,尽管我的JAVA_HOME设置为使用java8 - /usr/libexec/java_home -v 1.8
鉴于,我的安装是使用brew完成的- brew只是Mac OS的包管理器,我的M2_HOME是自动设置的。这通常在/usr/local/Cellar/maven/3.5.4
带着这个新发现的知识,我跑了
nano /usr/local/Cellar/maven/3.5.4/bin/mvn
内容是
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-$(/usr/libexec/java_home)}" exec "/usr/local/Cellar/maven/3.5.4/libexec/bin/mvn" "$@"
重要的位
"${JAVA_HOME:-$(/usr/libexec/java_home)}"
要解决这个问题,需要指定maven默认使用的java版本。所以在我的例子中,我需要java8。
按如下步骤更新/usr/local/Cellar/maven/3.5.4/bin/mvn文件
#!/bin/bash
JAVA_HOME="${JAVA_HOME:-$(/usr/libexec/java_home -v 1.8)}" exec "/usr/local/Cellar/maven/3.5.4/libexec/bin/mvn" "$@"
其他回答
编辑:
Ondrej的回答提供了一个更好的解决方案,它避免了记住别名。
最初的回答:
为安装了多个Java版本的用户添加解决方案
我们有一个很大的代码库,其中大部分是Java。我所做的大部分工作都是用Java 1.7或1.8编写的。由于JAVA_HOME是静态的,我在.bashrc中创建了不同值的别名来运行Maven:
alias mvn5="JAVA_HOME=/usr/local/java5 && mvn"
alias mvn6="JAVA_HOME=/usr/local/java6 && mvn"
alias mvn7="JAVA_HOME=/usr/local/java7 && mvn"
alias mvn8="JAVA_HOME=/usr/local/java8 && mvn"
这让我可以在我的开发机器上从命令行运行Maven,而不管项目上使用的JDK版本是什么。
解决这个问题的一个简单办法就是
JAVA_HOME=/usr/lib/jvm/java-6-sun/ mvn clean install
在Mac上,它看起来像-
JAVA_HOME = /图书馆/ Java / JavaVirtualMachines / jdk1.7.0_21。jdk/Contents/Home/ mvn clean install
PS:我发现的一个特殊情况是,上面给出的命令对'fish' shell不起作用。我也有bash shell可用,它在那里工作得很好。只需使用命令'bash'切换到bash shell。
我在mac上没有成功,只是在控制台中设置JAVA_HOME,但我成功地使用了这种方法
在您的主目录下创建.mavenrc文件(因此文件的路径将是~/.mavenrc 导出JAVA_HOME=$(/usr/libexec/ JAVA_HOME -v 1.7)
在终端vi ~/.bash_profile 之后,将下面的路径粘贴到基本配置文件中,并用vim命令wq保存!
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export M2_HOME=/Users/mj/Tools/apache-maven-3.8.1
执行source ~/。Bash_profile让它永远工作 在此之后,您可以在终端中运行MVN -v进行检查
Maven home: /Users/mj/Tools/apache-maven-3.8.1
Java version: 1.8.0_211, vendor: Oracle Corporation,
runtime: /Users/mj/Tools/jdk1.8.0_211.jdk/Contents/Home/jre
Default locale: en_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
如果你想知道原因,请阅读下面的内容
许多基于Java的应用程序使用JAVA_HOME来定义Java运行时环境(JRE)的安装位置。 M2_HOME由Maven使用,它再次告诉程序在哪里找到Maven安装。
在mac上(假设你安装了正确的版本)
JAVA_HOME= ' /usr/libexec/ JAVA_HOME -v 1.8 ' mvn clean install -DskipTests . txt