在我的机器上,我安装了两个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?
当前回答
加上我的意见,并明确地提供解决方案。
我的Windows机器上安装了两个JDK——JDK 1.5和JDK 1.6。
我的默认(并设置为windows系统环境变量)JAVA_HOME设置为JDK 1.5。
然而,我有一个maven项目,我需要使用JDK 1.6构建(即,JBehave教程的Etsy.com)。
我在这种情况下的解决方案(工作!),是由@DanielBarbarian建议设置在mvn.bat。
对于一些不熟悉window的批处理文件,我基本上只是在mvn.bat(即%MAVEN_HOME%\bin\mvn.bat)中添加了@REM ==== START VALIDATION ====后的set JAVA_HOME=<path_to_other_jdk>行:
@REM ==== START VALIDATION ====
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre
if not "%JAVA_HOME%" == "" goto OkJHome
其他回答
在使用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
您只需要在调用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中工作得很好:)
加上我的意见,并明确地提供解决方案。
我的Windows机器上安装了两个JDK——JDK 1.5和JDK 1.6。
我的默认(并设置为windows系统环境变量)JAVA_HOME设置为JDK 1.5。
然而,我有一个maven项目,我需要使用JDK 1.6构建(即,JBehave教程的Etsy.com)。
我在这种情况下的解决方案(工作!),是由@DanielBarbarian建议设置在mvn.bat。
对于一些不熟悉window的批处理文件,我基本上只是在mvn.bat(即%MAVEN_HOME%\bin\mvn.bat)中添加了@REM ==== START VALIDATION ====后的set JAVA_HOME=<path_to_other_jdk>行:
@REM ==== START VALIDATION ====
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45\jre
if not "%JAVA_HOME%" == "" goto OkJHome
我正在使用jenv,并面临“javax.xml.bind”的编译错误。注释”,因为终端中的MVN使用的是openjdk 13
Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec
Java version: 13.0.2, vendor: N/A, runtime: /usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home
对我来说,它在运行'jenv enable-plugin maven'后工作,就像这里建议的那样 https://stackoverflow.com/a/56487374/1582473