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

如何将Maven设置为使用1.7?


当前回答

我使用的是MAC Mini - M1芯片,在通过brew install maven安装maven后,我注意到它使用的是java 19,但我更想使用我下载到我的机器中的java 17版本。不幸的是,特定的指示重置默认的mvn java版本。以下是你可以遵循的步骤。

MVN——version #这将给出maven的安装位置 Maven home: /opt/homebrew/Cellar/ Maven /3.8.7/libexec 然后进入/opt/homebrew/Cellar/maven/3.8.7/bin文件夹 编辑mvn文件,我使用vi mvn 下面我编辑了jdk的位置,指向我有java 17 jdk的位置

#!/bin/bash
JAVA_HOME="${JAVA_HOME:-/Library/Java/JavaVirtualMachines/jdk-17.0.3.1.jdk/Contents/Home}" exec "/opt/homebrew/Cellar/maven/3.8.7/libexec/bin/mvn"  "$@"

编辑完成后保存MVN文件 MVN -v现在会显示它的默认Java版本是17

Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /opt/homebrew/Cellar/maven/3.8.7/libexec
Java version: 17.0.3.1, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-17.0.3.1.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "13.1", arch: "aarch64", family: "mac"

其他回答

编辑:

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版本是什么。

您可以使用maven-compiler-plugin使用不同的JDK配置编译源。

只需在<executable>标签中指定路径到javac。例如,对于java11,它看起来像:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>11</source>
        <target>11</target>
        <fork>true</fork>
        <executable>C:\Program Files\Java\jdk-11.0.1\bin\javac</executable> <!--PATH TO JAVAC -->
    </configuration>
</plugin>

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

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

我在mac上没有成功,只是在控制台中设置JAVA_HOME,但我成功地使用了这种方法

在您的主目录下创建.mavenrc文件(因此文件的路径将是~/.mavenrc 导出JAVA_HOME=$(/usr/libexec/ JAVA_HOME -v 1.7)

您可以按照下面的说明将Maven设置为使用任何java版本。

在你的机器上安装jenv链接

通过在命令行中发出以下命令,检查机器中安装的可用java版本。

jenv版本

可以使用以下命令指定全局Java版本。

Jenv global oracle64-1.6.0.39

您可以在命令行中的目录中使用以下命令为任何目录(项目)指定本地Java版本。

Jenv local oracle64-1.7.0.11

在pom.xml中添加正确的Java版本

如果你在命令行中运行maven,使用下面的命令安装jenv maven插件

Jenv使能插件maven

现在,您可以在您的机器上为任何项目配置任何java版本,而不会遇到任何麻烦。