and*_*Pat 138 maven java-6 java-7
在我的机器我安装了两个版本的Java:(1.6和1.7手动我安装).我需要他们两个不同的项目.但Maven的,我需要1.7,现在我的Maven使用1.6 Java版本,我怎么能设置的Maven使用1.7?
Dan*_*ian 114
Maven使用该JAVA_HOME
参数来查找它应该运行的Java版本.我从您的评论中看到,您无法在配置中更改它.
JAVA_HOME
在启动maven之前设置参数(如果需要,可以在之后将其更改).mvn
(非windows)/ mvn.bat
/ mvn.cmd
(windows)并在那里明确设置你的java版本.Edw*_*oss 67
在POM中,您可以设置编译器属性,例如1.8:
<project>
...
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
...
</project>
Run Code Online (Sandbox Code Playgroud)
Jon*_*rum 40
我们有一个很大的代码库,其中大部分是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"
Run Code Online (Sandbox Code Playgroud)
这使我可以从我的开发机器上的命令行运行Maven,而不管项目中使用的JDK版本如何.
Jon*_*han 31
加上我的两分钱并明确提供解决方案.
我的Windows机器上安装了两个JDK - JDK 1.5
和JDK 1.6
.
我的默认设置(并设置为windows系统环境变量)JAVA_HOME
设置为JDK 1.5
.
但是,我有一个我需要构建的maven项目(即JBehave Tutorial的Etsy.com)使用JDK 1.6
.
我在这种情况下的解决方案(工作正常!),如建议的@DanielBarbarian
那样mvn.bat
.
对于一些不熟悉窗口批处理文件的人,我基本上只是在(即)set JAVA_HOME=<path_to_other_jdk>
之后添加了一行:@REM ==== START VALIDATION ====
mvn.bat
%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
Run Code Online (Sandbox Code Playgroud)
Ron*_*ere 31
在窗户上
如果您不想JAVA_HOME
在系统变量中更改变量.
编辑您的mvn.bat
文件并添加如下所示的行
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_45\jre
Run Code Online (Sandbox Code Playgroud)
这可以在@REM ==== START VALIDATION ====
@Jonathan提到之后完成
在Mac上(&Linux?)
如果你不想改变JAVA_HOME
你~/.bashrc
或你的变量~/.bash_profile
您可以创建一个~/.mavenrc
文件并JAVA_HOME
使用java_home工具重新定义您的文件
export JAVA_HOME=`/usr/libexec/java_home -v 1.7.0_45`
Run Code Online (Sandbox Code Playgroud)
完整性检查
您可以通过执行以下命令来验证一切正常.jdk版本应该是不同的.
mvn -version
然后
java -version
Ond*_*ert 26
我最近在与Maven长达七年之后,了解了toolchains.xml.Maven甚至还记录了它,并从2.0.9开始支持它 - 工具链文档
所以我在〜/ .m2 /文件夹中添加了一个toolchain.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>/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>
Run Code Online (Sandbox Code Playgroud)
它允许您定义Maven可以使用哪些不同的JDK来构建项目,而不管JDK Maven运行的是什么.有点像在IDE中在项目级别定义JDK时.
Tec*_*nic 10
我使用的是 Mac,上面的答案都没有帮助我。我发现maven从以下指定的路径加载自己的JAVA_HOME:~/.mavenrc
我将文件内容更改为:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
对于 Linux 来说,它看起来像:
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
Run Code Online (Sandbox Code Playgroud)
您可以按照以下说明将 Maven 设置为使用任何 Java 版本。
在你的机器链接中安装 jenv
通过在命令行中发出以下命令来检查机器中安装的可用 Java 版本。
jenv 版本
您可以使用以下命令指定全局 Java 版本。
jenv 全局 oracle64-1.6.0.39
您可以在命令行的目录中使用以下命令为任何目录(项目)指定本地 Java 版本。
jenv 本地 oracle64-1.7.0.11
在 pom.xml 中添加正确的 java 版本
如果您在命令行中运行 maven,请使用以下命令安装jenv maven 插件
jenv 启用插件 maven
现在,您可以将机器中的任何 Java 版本配置到任何项目,而不会出现任何问题。
小智 6
该问题的一种简单解决方案 -
JAVA_HOME=/usr/lib/jvm/java-6-sun/mvn 全新安装
在 Mac 上,它看起来像 -
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/ mvn全新安装
PS:我发现的一个特殊情况是上面给出的命令在“鱼”外壳上不起作用。我也有可用的 bash shell,它在那里工作得很好。只需使用命令 'bash' 切换到 bash shell。
您可以配置编译使用不同的JDK源用maven-compiler-plugin
。
只需指定javac
in<executable>
标签的路径。例如,对于 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>
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,我只是将不同 JDK 版本的多个批处理文件添加到 Maven bin 文件夹中,如下所示:
mvn11.cmd
@echo off
setlocal
set "JAVA_HOME=path\to\jdk11"
set "path=%JAVA_HOME%;%path%"
mvn %*
Run Code Online (Sandbox Code Playgroud)
那么你就可以使用mvn11
在指定的JDK中运行Maven了。
在不改变环境变量的情况下,您可以使用 Maven Compiler Plugin 基于项目级别管理 Java 版本。
方法一
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
方法二
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
219133 次 |
最近记录: |