解决修改pom.xml导致IDEA设置改变的问题

前一阵子用Intellij IDEA导入了一个maven项目,本来已经设置好了如下的两个配置项

Settings->Compiler->Java Compiler->Target Bytecode Version为1.8
Project Settings->Modules->Source->Language Level为8

一开始用的好好的,但是如果修改了pom.xml之后,就会出现类似”Lambda expressions not supported at this language level”这样的提示,这时再去看上面说的两个设置,发现都变成了1.7,手动改回1.8之后,如果再修改pom.xml,还会出现同样的问题。

后来上网搜索了一下,发现这是因为IDEA的这两个设置会跟随pom.xml里面的设置改变,但是我的pom.xml里面并没有对应的内容,又搜索了一下Maven如何设置Java版本号,找到了Maven官方提供的解决方案,根据这个文档,增加了如下的设置,再修改pom.xml,发现两个设置项都不再变化了。

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>  
</properties>

但是最近又用IDEA打开了一个Spring Boot项目,pom.xml里默认已经设置了

<properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
  </properties>

可是还是会有修改了pom.xml之后,IDEA设置改变的问题,而且Spring Boot的pom.xml没有使用maven-compiler-plugin,默认只有一个spring-boot-maven-plugin,最后还是照搬了上面那个文档的方案,直接给pom.xml增加了一个maven-compiler-plugin

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

增加了这个maven-compiler-plugin之后,再修改pom.xml,IDEA的设置终于可以不再自动变化了。