在我的机器上,我安装了两个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?
当前回答
在使用Maven长达7年之后,我最近才学会了toolchains.xml。Maven甚至已经对它进行了文档化,并从2.0.9开始支持它——工具链文档
所以我在~/中添加了toolchains.xml文件。M2 /文件夹,内容如下:
<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>
它允许您定义可以使用哪些不同的JDK Maven来构建项目,而不管JDK Maven使用什么运行。有点像在IDE中在项目级别上定义JDK。
其他回答
在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
您可以使用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>
您只需要在调用JAVA_HOME之前将您的JAVA版本添加到mvn文件中 例如,我的。bashrc文件中的JAVA版本是JAVA -17 我想用Java-11运行maven:
文件/usr/share/maven/bin/mvn: 我补充说:
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
在脚本中调用JAVA_HOME之前
然后它在Java-11中工作得很好:)
我在mac上没有成功,只是在控制台中设置JAVA_HOME,但我成功地使用了这种方法
在您的主目录下创建.mavenrc文件(因此文件的路径将是~/.mavenrc 导出JAVA_HOME=$(/usr/libexec/ JAVA_HOME -v 1.7)
在终端vi ~/.bash_profile 之后,将下面的路径粘贴到基本配置文件中,并用vim命令wq保存!
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export M2_HOME=/Users/mj/Tools/apache-maven-3.8.1
执行source ~/。Bash_profile让它永远工作 在此之后,您可以在终端中运行MVN -v进行检查
Maven home: /Users/mj/Tools/apache-maven-3.8.1
Java version: 1.8.0_211, vendor: Oracle Corporation,
runtime: /Users/mj/Tools/jdk1.8.0_211.jdk/Contents/Home/jre
Default locale: en_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
如果你想知道原因,请阅读下面的内容
许多基于Java的应用程序使用JAVA_HOME来定义Java运行时环境(JRE)的安装位置。 M2_HOME由Maven使用,它再次告诉程序在哪里找到Maven安装。