如何将特定的Java版本设置为Maven

问题描述 投票:122回答:13

在我的机器上我安装了两个java版本:(1.6和1.7由我手动安装)。我需要他们两个不同的项目。但是对于Maven我需要1.7,现在我的Maven使用了1.6个java版本,我如何设置Maven使用1.7?

maven java-7 java-6
13个回答
100
投票

Maven使用JAVA_HOME参数来查找它应该运行的Java版本。我从您的评论中看到,您无法在配置中更改它。

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

0
投票

在Linux / Unix上,'mvn'hell脚本中的JAVA_HOME被设置覆盖

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

link


0
投票

您也可以安装两个版本的maven,并编辑其中一个版本,在此处进行编辑:

行家(非视窗)/mvn.bat/mvnw.cmd(视窗)

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


0
投票

我在mac上没有成功,只是在控制台中设置了$HOME/.mavenrc 但我用这种方法成功了


0
投票

你可以用~/.mavenrc配置export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)

只需在compiling sources using different JDK标签中指定maven-compiler-plugin的路径即可。例如,对于java11,它看起来像:

javac

0
投票

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

mvn11.cmd

<executable>

然后你可以使用<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> 在指定的JDK中运行Maven。


54
投票

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

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

36
投票

Adding a solution for people with multiple Java versions installed

我们有一个很大的代码库,其中大部分是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版本如何。


31
投票

加上我的两分钱并明确提供解决方案。

我的Windows机器上安装了两个JDK - qazxsw poi和qazxsw poi。

我的默认值(并设置为windows系统环境变量)JDK 1.5设置为JDK 1.6

但是,我需要使用JAVA_HOME构建一个maven项目(即JDK 1.5)。

我在这个场景中的解决方案(有效!),正如JBehave Tutorial's Etsy.com所建议的那样在JDK 1.6中设置它。

对于一些不熟悉窗口批处理文件的人,我基本上在@DanielBarbarian(即mvn.bat)的set JAVA_HOME=<path_to_other_jdk>之后添加了@REM ==== START VALIDATION ====行:

mvn.bat

27
投票

在窗户上

如果您不想在系统变量中更改%MAVEN_HOME%\bin\mvn.bat变量。

编辑您的@REM ==== START VALIDATION ==== set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre if not "%JAVA_HOME%" == "" goto OkJHome 文件并添加如下所示的行

JAVA_HOME

这可以在@Jonathan提到的mvn.bat之后完成

在Mac上(&Linux?)

如果您不想在set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre @REM ==== START VALIDATION ====中更改JAVA_HOME变量

你可以创建一个~/.bashrc文件并使用~/.bash_profile重新定义你的~/.mavenrc

JAVA_HOME

完整性检查

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

java_home tool

然后

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


23
投票

我最近在与Maven长达七年之后,了解了toolchains.xml。 Maven甚至记录了它并从2.0.9开始支持它 - mvn -version

所以我在〜/ .m2 /文件夹中添加了一个toolchain.xml文件,其中包含以下内容:

java -version

它允许您定义Maven可以使用哪些不同的JDK来构建项目,而不管JDK Maven运行的是什么。有点像在IDE中在项目级别定义JDK时。


3
投票

为了避免对项目和环境变量产生任何影响,您可以只为项目的POM配置Maven编译器插件,指定源和目标java版本

toolchains documentation

3
投票

解决问题的一个简单方法 -

JAVA_HOME = / usr / lib / jvm / java-6-sun / mvn clean install

在Mac上,它看起来像 -

JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.7.0_21.jdk / Contents / Home / mvn clean install

PS:我发现的一个特例是上面给出的命令对'fish'shell不起作用。我也有bash shell可用,它在那里工作得很好。只需使用命令'bash'切换到bash shell。


1
投票

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

在您的机器<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>/opt/java8</jdkHome> </configuration> </toolchain> <toolchain> <type>jdk</type> <provides> <version>1.7</version> <vendor>sun</vendor> </provides> <configuration> <jdkHome>/opt/java7</jdkHome> </configuration> </toolchain> </toolchains> 中安装jenv

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

jenv版本

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

jenv global oracle64-1.6.0.39

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

jenv local oracle64-1.7.0.11

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

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

jenv enable-plugin maven

现在,您可以将计算机中的任何Java版本配置为任何项目而不会出现任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.