如何使Maven使用JDK1.8而不是JDK1.6

时间:2014-10-11 18:42:14

标签: java eclipse maven

我是maven的新手,我发现虽然我将项目的jdk的方面更改为1.8,但每次我更新maven"它都会回到jdk 1.6。

为什么?

我在我的窗口安装了jdk 1.8,我正在使用eclipse。

我阅读Specify JDK for Maven to use并添加以下内容但不起作用。

   <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <executions>
    <execution>
      <id>enforce-versions</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireJavaVersion>
            <version>1.8</version>
          </requireJavaVersion>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>

4 个答案:

答案 0 :(得分:7)

maven将使用的JDK版本在maven-compiler-plugin中设置如下:

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
      <source>1.8</source>   <!-- use java 8 -->
      <target>1.8</target>
    </configuration>
  </plugin>

有关详细信息,请参阅Setting the -source and -target of the Java Compiler

答案 1 :(得分:0)

检查maven编译器插件以指定源和目标java版本,

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

此致 人员Prasanna

答案 2 :(得分:0)

也许为时已晚,但它对我有用:

<!-- we want JDK 1.8 source and binary compatiblility -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    <!-- ... -->
    <!-- we want sources to be processed by a specific 1.8 javac -->
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable>${JAVA_1_8_HOME}/bin/javac</executable>
        </configuration>
    </plugin>

你的问题无论如何帮助了我很多:)谢谢:)

答案 3 :(得分:0)

在评论中你问:

  

那么maven-enforcer-plugin呢,这是做什么用的?

根据插件的documentation

  

&#34;此目标旨在绑定到生命周期阶段并在pom.xml中进行配置。执行者执行配置的规则以检查某些约束。&#34;

换句话说,它检查是否满足某些约束 。它不会导致满足它们。

在您的示例中,如果Java版本不是Java 1.8,插件的效果应该是以导致构建失败。

  

...以及它解决线程的原因&#34;为Maven指定JDK使用&#34;?

您所指的answer说:

  

&#34;它永远不会伤害...添加maven-enforce-plugin以确保使用正确的jdk。这对你的pom来说是一个很好的做法。&#34;

正如您所看到的,它没有说明maven-enforce-plugin&#34;解决了&#34;问题。它实际上提供了一种方法来确保问题已经解决......如果没有构建就失败了。