运行我们的Maven构建时,我的团队中的成员在执行时会出错。但是,当我们java -version
从她的命令行运行时,它表示Java 1.6.0_26。该错误显然似乎在尖叫Maven使用Java 5。
如何确定和更改Maven使用的Java版本?
3个潜在的重要注意事项:
- 这是在命令行执行的,而不是使用Eclipse插件
- JAVA_HOME设置为Java 1.6 JDK
- 使用Maven 2.2.1
Answers:
mvn -version
将输出它正在使用的Java。如果将JAVA_HOME设置为有效的JDK目录,并且Maven使用其他东西,则很可能有人篡改了Maven的启动方式。
您将需要配置maven-compiler-plugin
为使用1.6source
和target
参数(默认为1.5)。
这是在项目的父pom<pluginManagment>
部分中最好的方法(但是您始终可以始终为每个项目配置它)。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
mvn -version
告诉您Maven使用的是什么编译器,因此,除非您的POM为要使用的版本指定替代值,否则这将回答问题。
这是在中指定替代的最简单方法pom.xml
:
<properties>
<maven.compiler.target>1.9</maven.compiler.target>
<maven.compiler.source>1.9</maven.compiler.source>
</properties>
或者,maven-compiler-plugin
可以更明确地指定。在这种情况下,请查看与插件关联的<source>
和<target>
值。
这两个选项均在此处介绍。
如果您的POM带有<parent>
,则还需要检查(递归)。
注意:指定source
和时target
,这些值将作为命令行选项传递给编译器。使用此功能,您可以在比编译器标称值更早的Java版本上进行编译或运行。
javac
从您的路径:JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 mvn clean install
。关于在Maven下可以覆盖/何时覆盖的里程可能会有所不同。
JAVA_HOME
可能已经在您的环境中设置了-覆盖PATH
变量。