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

如何将Maven设置为使用1.7?


当前回答

在windows中,我只是将不同JDK版本的多个批处理文件添加到Maven bin文件夹中,如下所示:

mvn11.cmd

@echo off
setlocal
set "JAVA_HOME=path\to\jdk11"
set "path=%JAVA_HOME%;%path%"
mvn %*

然后你可以使用mvn11在指定的JDK中运行Maven。

其他回答

在POM中,你可以设置编译器属性,例如1.8:

<project>
...
 <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
...
</project>

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

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

$HOME/.mavenrc

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

解决这个问题的一个简单办法就是

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。

编辑:

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