Maven项目Update Project自动恢复为JRE1.5的问题

Posted H小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven项目Update Project自动恢复为JRE1.5的问题相关的知识,希望对你有一定的参考价值。

问题:

使用Eclipse建立Maven项目的时候,JDK默认为1.5在用户使用Config Build Path更新为最新JRE库比如1.8或者1.7的后,Maven项目显示JRE1.8 or 1.7,但是当我们不经意Update Project后,发现,JRE又重新恢复为JRE1.5.

原因分析

 Maven官方文档有如下描述:
编译器插件用来编译项目的源文件.从3.0版本开始, 
用来编译Java源文件的默认编译器是javax.tools.JavaCompiler (如果你是用的是java 1.6) . 
如果你想强制性的让插件使用javac,你必须配置插件选项 forceJavacCompilerUse.  
同时需要注意的是目前source选项和target 选项的默认设置都是1.5, 与运行Maven时的JDK版本无关.
如果你想要改变这些默认设置, 可以参考 Setting the -source and -target of the Java Compiler中的描述来设置 source 和target 选项.
这是Maven已知的一个特性。除非在你的POM文件中显示的指定一个版本,否则会使用编译器默认的source/target版本1.5。主要还是在于Eclipse中Maven的集成方式起到了关键作用, 它会从POM文件中生成项目的.project,.classpath以及.settings, 因此除非POM文件指定了正确的JDK版本, 否则你每次更新项目配置的时候它都会重置到1.5版本。 

解决方法1

可以修改pom.xml,直接指定JDK版本,例如:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <!-- maven compiler plugin版本必须正确否则下面设置的JDK版本不起作用 -->
  <version>3.5.1</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>

解决方法2
修改setting.xml
直接通过Maven的配置文件进行指定JRE版本。Global Setting与User Setting两个设置指定位置的setting.xml文件。在profiles标记中添加如下配置

<!-- 此处的jdk版本须与java jdk版本一致 -->
<
profile>   <id>jdk-1.8</id>   <activation>     <activeByDefault>true</activeByDefault>     <jdk>1.8</jdk>   </activation>   <properties>     <maven.compiler.source>1.8</maven.compiler.source>     <maven.compiler.target>1.8</maven.compiler.target>     <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>   </properties> </profile>

 

 

 












以上是关于Maven项目Update Project自动恢复为JRE1.5的问题的主要内容,如果未能解决你的问题,请参考以下文章

Maven项目Update Project...后JRE System Library会自动变回1.5解决办法

解决maven update project 后项目jdk变成1.5的问题

maven项目建好后 用update maven project 报错

Maven项目进行update project时出现Could not calculate build plan错误

解决Maven的Could not update project XXX configuration NullPointerException 错误

Maven项目Update Maven Project后报错:Dynamic Web Module 3.0 requires java 1.6 or newer