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

如何将Maven设置为使用1.7?


当前回答

你也可以安装两个版本的maven,然后编辑其中一个,点击这里编辑:

mvn (non-windows) / mvn。蝙蝠mvn cmd (windows)。

将您的%java_home%外观替换为您的Java所需路径。然后从修改后的路径执行maven

其他回答

编辑:

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默认版本 您的系统上可能有两个不同版本的Java。要设置一个为默认值,使用命令:

Sudo选项——配置Java

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

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

Mac用户, 如果您已经从HomeBrew(Brew)安装了maven, 或者即使你是从别处安装的, 如果您想更改Maven使用的Java的默认版本, 您可以使用以下命令来更改maven使用的版本,

vim ~/.mavenrc

在弹出的gui中输入这个并保存-

JAVA_HOME="(put the Home path of your desired java version package)"

要验证maven的路径是否已更改,可以使用-进行检查

mvn -v

在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

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>