我是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>
答案 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;问题。它实际上提供了一种方法来确保问题已经解决......如果没有构建就失败了。