遇到的问题:

使用IDEA导入一个Maven多模块项目遇到关于JDK和Maven版本相关的问题,这里记录一下解决办法。

  1. 如何修改当前项目JDK和Maven的版本?

修改当前项目对应Maven版本:

  • File -> Setting -> 搜索Maven

修改JDK版本,需要同时修改Project Structure的Project、Modlues设置和Setting设置:

  • File -> Project Structure -> Project (修改)->Modules(修改)->SDK(修改)

  • File -> Setting -> 搜索Java -> 修改所有子模块的JDK编译版本

这样,当前项目的JDK和Maven版本就修改好了,但是这样后面的新项目不会生效,还要继续修改,想要对新项目生效,就需要设置默认的版本(看下面问题2)。

  1. 如何设置默认导入一个项目时的JDK和Maven版本?

修改导入时项目的默认Maven:

  • 2018版,路径File -> Other Setting -> Default Setting

  • 2021版IDEA路径:File -> …

修改默认JDK版本:

  • 2018版,路径File -> Other Setting -> Default Project Structure

  • 2021版IDEA路径:File -> …

保存生效后,后面新导入的项目就会使用默认的JDK和Maven版本。但有时新导入的多模块项目的父模块使用的是默认设置JDK版本,但是子模块使用的是其他版本(看问题3)。

  1. 如何设置默认导入项目时的父模块和子模块的JDK版本?

需要在项目的pom文件中配置对应的版本

1.81.8

并且一劳永逸的方法就是修改指定的maven setting.xml配置

jdk-11true11111111 
  1. 如果出现修改了JDK版本,后面又自动修改回来,可能的原因和解决方式是什么?

如果Maven Profiles这里有多个JDK版本,很可能出现修改了配置之后,又重新恢复成原来的版本的情况,这是需要检查你指定的setting.xml文件中的是否指定了多个,或者C盘是否有默认的setting.xml文件指定了JDK版本,去掉其他不想用的那个勾选项,修改setting.xml只指定一个JDK版本的。如果都没有,清除缓存重新使用一个新项目再试试。

原理分析:

  1. 修改File -> Setting -> Java编译版本项目于修改了项目目录下的complier.xml中的<bytecodeTargetLevel>标签的版本,所以修改这个文件中的模块版本,File -> Setting -> Java编译版本也会同步修改。

  1. 修改File -> Project Structure 中的Modules编译版本,其实相当于修改了modules.xml中的JDK版本,同理,也可以批量替换这个文件中的JDK版本,相应的File -> Project Structure 中的Modules编译版本也会同步修改。

  1. 修改Maven setting.xml文件的jdk版本,相当于修改IDEA Maven的Profiles的JDK版本。

参考文档:

https://segmentfault.com/q/1010000003509821

https://blog.csdn.net/isea533/article/details/48575983