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

如何将Maven设置为使用1.7?


当前回答

为了避免对项目和环境变量的任何影响,您可以将Maven Compiler Plugin配置为项目的POM,指定源和目标java版本

  <plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    ...
  </plugins>

其他回答

在windows上

如果您不希望更改系统变量中的JAVA_HOME变量。

编辑mvn.bat文件并添加如下一行

set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre

这可以在@REM ==== START VALIDATION ====之后完成,就像@Jonathan提到的那样

在Mac(和Linux ?)

如果您不想在~/中更改JAVA_HOME变量。bashc或~/.bash_profile

您可以创建一个~/。使用JAVA_HOME工具重新定义您的JAVA_HOME

export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`

完整性检查

您可以通过执行以下命令来验证一切是否正常工作。jdk版本应该不同。

mvn - version

then

java - version

用上面的答案我无法解决这个问题,我尝试了很多方法来解决这个问题,我得到了它。我希望像我这样的人能解决这个问题。

我正在使用brew安装java和maven。 对我来说,我想使用java 1.8。所以我安装了java 1.8 但是maven仍然使用17.0.2版本

解决方案: 安装Java 1.8 我参考这个网站来安装它:https://devqa.io/brew-install-java/

MVN——版本,记住版本\

cat /usr/local/Cellar/maven/VERSION(for me 3.8.5)/bin/mvn

然后你会看到

#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/usr/local/opt/openjdk/libexec/openjdk.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn"  "$@"\

检查这个目录

ls /usr/local/opt

您将看到openjdk、openjdk@17、openjdk@8等文件

在MVN文件中将openjdk目录更改为openjdk@8:

#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/usr/local/opt/openjdk@8/libexec/openjdk.jdk/Contents/Home}" exec "/usr/local/Cellar/maven/3.8.5/libexec/bin/mvn"  "$@"\

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

$HOME/.mavenrc

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

我正在使用Mac,上面的答案对我没有任何帮助。我发现maven从:~/.mavenrc中指定的路径加载自己的JAVA_HOME

我将文件的内容更改为:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home

对于Linux,它看起来像这样:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre

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