在我的机器上,我安装了两个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?
当前回答
我使用的是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"
其他回答
我使用了@Jonathan的基本想法。 我设置了窗口:set JAVA_HOME=C:\Program Files\java\AdoptOpenJDK-11.0.8+10 调用mvn清理包-DskipTests
解决这个问题的一个简单办法就是
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。
用上面的答案我无法解决这个问题,我尝试了很多方法来解决这个问题,我得到了它。我希望像我这样的人能解决这个问题。
我正在使用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" "$@"\
Ondrej的回答 完美的工作。它真正解决了问题。工具链文档中详细介绍了其他一些事情
在项目POM中添加maven-toolchains-plugin 配置maven-toolchains-plugin以使用toolchains.xml文件中配置的工具链中的特定JDK。
请看下面的配置示例:
toolchains.xml
<toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
<!-- JDK toolchains -->
<toolchain>
<type>jdk</type>
<provides>
<version>1.8</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>17</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
<toolchain>
<type>jdk</type>
<provides>
<version>11</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>/Library/Java/JavaVirtualMachines/jdk-11.0.12.jdk/Contents/Home</jdkHome>
</configuration>
</toolchain>
</toolchains>
如上所述,这适用于安装了多个java版本的机器。 然后在项目的POM中,maven-toolchains-plugin被配置为使用定义为工具链的JDK版本之一。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-toolchains-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>toolchain</goal>
</goals>
</execution>
</executions>
<configuration>
<toolchains>
<jdk>
<version>11</version>
<vendor>sun</vendor>
</jdk>
</toolchains>
</configuration>
</plugin>
你也可以安装两个版本的maven,然后编辑其中一个,点击这里编辑:
mvn (non-windows) / mvn。蝙蝠mvn cmd (windows)。
将您的%java_home%外观替换为您的Java所需路径。然后从修改后的路径执行maven