为什么Maven Update Project JDK变回1.5

如题所述

主要原因是每次Update时,它就会使用settings文件下的默认值。(原来这是maven自己捣的鬼)

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版本。 

解决方案

方案一

在pom.xml文件中增加如下配置:

方案二

打开 settings.xml 文件并编辑它(一般放在你的仓库目录目录) :

找到 <profiles> 节点,并添加如上配置(本机 jdk 1.8.0——25 版本,配置时修改成你本机的 jdk 版本),保存后生效。

修改Eclipse中的设置,使配置生效。此方案全局有效。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-09-06

一、问题描述 

            在Eclipse中新建了一个Maven工程, 然后更改JDK版本为1.6, 结果每次使用Maven > Update project的时候JDK版本都恢复成1.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版本。 


三、解决方案


我们可以在pom里给它强制指定一下

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
</plugins>


这样再次update project后就会发现jdk变成1.7的了

本回答被提问者和网友采纳

maven的update project是什么意思
1、Maven是一个项目管理工具。2、update project本身是更新项目的意思。3、当Maven工程被做了一些改变后(主要是结构上的改变),必须让maven重新生成或修改相关文件。否则eclipse将不知道变化。这时候需要运行“update project”来更新相对应的“eclipse的.classpath”文件,来更新它,让eclipse知道这个包是b...

为什么Maven会更改Eclipse JDK设置
这是Maven已知的一个特性。除非在你的POM文件中显示的指定一个版本,否则会使用编译器默认的source\/target版本1.5。主要还是在于Eclipse中Maven的集成方式起到了关键作用, 它会从POM文件中生成项目的.project,.classpath以及.settings, 因此除非POM文件指定了正确的JDK版本, 否则你每次更新项目配置的时候它...

如何修改Maven的JDK版本
1、创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本。2、每次右键项目名-maven->update project 时候,项目jdk版本变了,变回1.5版本或者其他版本 解决办法:解决办法一:在项目中的pom.xml指定jdk版本,如下:复制代码 1 <build> 2 <plugins> 3 <plugin> 4 <...

如何修改Maven的JDK版本
使用maven的时候,默认会使用1.5版本的JDK,并且也是编译成1.5的,电脑里面用的JDK是1.7的,1.8也出来了,没理由还用1.5的吧!所以手动改成了1.7,郁闷的是,每次 maven-update project 的时候,又变成1.5的了 查阅了相关资料后,发现了修改的方法,打开maven安装目录下的 maven--》conf 修改...

怎么更改maven工程jdk版本
两种方式1:创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本。2:修改pom.xml文件org.apache.maven.pluginsmaven-compiler-plugin1.71.7true

java出现这样的错误?
有时候是真的有问题(确实有错不能运行),有时候是因为import后没有刷新(没错但是不能运行),有时候单纯是eclipse环境出错(其实可以运行),以下是排查过程:1、先build project,然后右键项目->maven->update project pom还是有问题就到这个目录,打开命令行,mvn clean->mvn eclipse:clean->mvn ...

各位大神 换了台电脑 导入了一个商城项目 实现类全部报错 删掉override就...
<testTarget>1.7<\/testTarget> <\/configuration><\/plugin>直接在项目上右键build path->configure build path ,在libraries选项卡中把JRE System Library换成1.7版本jdk, 不过这种方法要每个子项目都做一次更换, 而且一旦再次使用maven->update project后, 可能又会变回1.5, 比较麻烦 ...

Maven 编译与JDK版本
场景说明:当前系统中,安装了JDK版本1.6、版本1.7、版本1.8与Maven版本3.1.0。默认JDK版本为1.7。问题点:1. 系统中Maven依赖的JDK版本为何?2. 系统中Maven在编译项目时使用的是哪个JDK版本?3. 如当前系统默认JDK版本为1.7,那么:a. 若存在需使用JDK版本1.6才能正常编译的特殊项目,应...

jdk1.8用哪个版本maven
<maven.compiler.source>1.7<\/maven.compiler.source> <maven.compiler.target>1.7<\/maven.compiler.target> <maven.compiler.compilerVersion>1.7<\/maven.compiler.compilerVersion> <\/properties> <\/profile> 最后,再次在eclipse中 maven--》update project 就会发现,maven的JDK版本变化了!

我有一个maven web项目是基于jdk1.8的,我现在把代码中java8的特性都用...
报的这个错和1.8还是1.7没啥关系,说的是找不到JDK,检查一下是不是把对java的依赖写成JRE了

相似回答