前一阵子用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的设置终于可以不再自动变化了。