繁体   English   中英

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

[英]How to make Maven use JDK1.8 instead of JDK1.6

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

这是为什么?

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

我阅读了指定JDK for Maven使用并添加以下内容但它不起作用。

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

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

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

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

此致,Prasanna

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

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

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

在评论中你问:

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

根据该插件的文档

“这个目标是绑定到生命周期阶段并在pom.xml中配置。执行者执行配置的规则来检查某些约束。”

换句话说,它检查是否已满足某些约束。 它不会使他们满意。

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

...以及它解决线程“为Maven指定JDK使用”的原因?

你指的答案是这样说的:

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

如您所见,它并未声明maven-enforce-plugin“解决”了该问题。 它实际上提供了一种方法来确保问题已经解决......如果没有,则构建失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM