如何找出并更改Java Maven用于执行的版本?

时间:2011-08-11 21:17:34

标签: java maven

运行我们的Maven构建时,我的团队成员在执行时会收到this错误。但是,当我们从命令行运行java -version时,它表示Java 1.6.0_26。显然,Maven正在使用Java 5,这个错误似乎在尖叫。

如何找出并更改Maven正在使用的Java版本?

3个可能重要的注意事项:

  1. 这是在命令行执行的,而不是使用Eclipse插件
  2. JAVA_HOME设置为Java 1.6 JDK
  3. 使用Maven 2.2.1

4 个答案:

答案 0 :(得分:83)

mvn -version将输出它正在使用的java。如果将JAVA_HOME设置为有效的JDK目录并且Maven正在使用其他内容,则很可能有人篡改了Maven启动的方式。

答案 1 :(得分:7)

您需要配置maven-compiler-plugin以使用1.6 sourcetarget参数(默认情况下为1.5)。

这是在<pluginManagment>部分中项目的父pom中最好的(但是你总是可以按个别项目配置它)。

  <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>

答案 2 :(得分:1)

答案 3 :(得分:1)

a <- 10 f <- function(){ a <<- 3 function() { a <<- 15 a <- 5 return(a) } } g <- f() g() a 告诉你Maven正在使用什么编译器,所以这回答了问题,除非你的POM指定了要使用的版本的覆盖值。

以下是在mvn -version中指定替代的最简单方法:

pom.xml

或者,可以更明确地指定maven-compiler-plugin。在这种情况下,请查看与插件相关联的<properties> <maven.compiler.target>1.9</maven.compiler.target> <maven.compiler.source>1.9</maven.compiler.source> </properties> <source>值。

这两个选项都描述为here

如果你的POM有<target>,那么你也需要检查它(递归)。

注意:指定<parent>source时,这些值将作为命令行选项传递给编译器。使用此功能,您可以编译或运行早于Java版本而不是编译器的标称值。