IDEA项目MAVEN依赖刷新后Language Level自动重置为5

问题

最近在IDEA导入了公司的一个工程,导入后,每次更新maven依赖后,项目就会出现一堆编译错误。如:

Diamond types are not supported at language level ‘1.5’
@Override is not allowed when implementing interface methd

这里提示泛型类型推断在1.5版本不支持,也就是说目前编译使用的JDK版本是1.5。

但是本地使用的JDK版本是1.8,idea的Java Compiler设置的也是1.8。
idea java编译器

原因

后来找到原因是对应模块的Module Settings里的Language Level默认是5。
language level为5

这里修改为8后,编译错误消失。

但每次reimport maven依赖后,编译错误又会重新出现,查看模块的Module Settings里的Language Level,又自动恢复为5了。

解决

网上搜索了一下,可以修改maven项目的pom文件,内部增加:

<project>
  ...
  <!-- 在属性里指定编译模板版本 -->
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  ...
</project>

但是对于module比较多的很复杂的项目,一个个增加properties就显得太过笨拙了。
还有一种方式是将编译版本设置在maven的settings文件中。
这样设置会对所有使用了该setting文件的module生效。

maven setting文件

settings.xml如下:

<settings>
	<localRepository>H:\mvn_repo</localRepository>
	<mirrors>
		<mirror>
		    <!--This sends everything else to /public -->
		    <id>nexus aliyun</id>
		    <mirrorOf>*</mirrorOf>
		    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
		</mirror>
	</mirrors>
	
	<profiles>
		<profile>
			<id>development</id>
			<!-- 这里设置后对所有项目生效 -->
			<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>
	</profiles>
	<activeProfiles>
		<activeProfile>development</activeProfile>
	</activeProfiles>
</settings>

总结

IDEA开发项目涉及到几个JDK版本:
IDEA本身启动使用的JDK版本,在本地环境变量设置;
Javac编译器版本,在File->Settings->Build,Execution,Deployment->Java Compiler设置;
项目的编译器版本,在项目上右键选择Open Module Settings->Project Settings->Project->Project SDK;
模块的语言版本,在项目上右键选择Open Module Settings->Project Settings->Modules->Language level

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值