在我的机器上,我安装了两个Java版本:(1.6和1.7由我手动安装)。我在不同的项目中都需要他们。但对于Maven,我需要1.7,但我的Maven使用1.6 Java版本。

如何将Maven设置为使用1.7?


当前回答

设置Java默认版本 您的系统上可能有两个不同版本的Java。要设置一个为默认值,使用命令:

Sudo选项——配置Java

系统显示不同Java版本的列表。如果您喜欢默认设置,请按Enter。

如果您想更改它,输入您想要的版本号,然后按Enter。

其他回答

最近安装了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" "$@"

我使用了@Jonathan的基本想法。 我设置了窗口:set JAVA_HOME=C:\Program Files\java\AdoptOpenJDK-11.0.8+10 调用mvn清理包-DskipTests

Maven使用JAVA_HOME参数来查找应该运行哪个Java版本。我从你的评论中看到,你不能在配置中改变它。

您可以在启动maven之前设置JAVA_HOME参数(如果需要,可以在启动maven之后将其更改回来)。 你也可以进入你的mvn(非windows)/mvn.bat/mvn.cmd(windows)并在那里显式设置你的java版本。

加上我的意见,并明确地提供解决方案。

我的Windows机器上安装了两个JDK——JDK 1.5和JDK 1.6。

我的默认(并设置为windows系统环境变量)JAVA_HOME设置为JDK 1.5。

然而,我有一个maven项目,我需要使用JDK 1.6构建(即,JBehave教程的Etsy.com)。

我在这种情况下的解决方案(工作!),是由@DanielBarbarian建议设置在mvn.bat。

对于一些不熟悉window的批处理文件,我基本上只是在mvn.bat(即%MAVEN_HOME%\bin\mvn.bat)中添加了@REM ==== START VALIDATION ====后的set JAVA_HOME=<path_to_other_jdk>行:

@REM ==== START VALIDATION ====
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre
if not "%JAVA_HOME%" == "" goto OkJHome

在Linux/Unix上,“mvn”shell脚本中的JAVA_HOME会被中的设置覆盖

$HOME/.mavenrc

在linux中添加JAVA_HOME和MAVEN路径变量