Maven多模块项目编译失败求助:Source/Target选项5不再支持
解决Maven多模块项目编译报错「Source/Target option 5不再支持」的方案
为啥会报错
你用的maven-compiler-plugin:3.1已经彻底不支持Java 5了,但Maven默认会把源码版本(source)和目标字节码版本(target)设为5,所以编译直接失败,提示你得用7或更高版本。
怎么解决
1. 父POM里统一配置编译版本
打开父项目的pom.xml,找到<build>下的<plugins>节点,添加或者修改maven-compiler-plugin的配置,指定source和target为7以上的版本(比如常用的Java 8,对应1.8):
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <!-- 这里改成你实际用的JDK版本,比如11就写11 --> <source>1.8</source> <target>1.8</target> <!-- 顺便加个编码配置,避免中文乱码问题 --> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>
如果父POM里已经有这个插件,直接改<configuration>里的source和target值就行。
2. 检查子模块有没有单独改配置
有些子模块可能自己写了编译插件的配置,会覆盖父POM的设置。挨个检查子模块的pom.xml,如果有单独的maven-compiler-plugin配置,要么改成和父POM一致的版本,要么直接删掉子模块里的这段配置,让它继承父POM的设置。
3. 确认本地JDK版本够不够
你指定的source/target版本不能比本地用的JDK版本高。比如你配置了1.8,那本地必须装了Java 8及以上版本。可以跑下面的命令看当前Maven用的JDK:
mvn -v
看输出里的Java version是不是符合要求。
额外提醒
如果项目非得兼容老版本JDK,但又不想换插件版本,也可以把maven-compiler-plugin升级到更高版本(比如3.8.1),新版本对不同JDK的兼容性更好。不过更建议直接把项目的JDK版本升到7以上,毕竟Java 5早就被淘汰了。
内容的提问来源于stack exchange,提问作者aibgood
相关产品推荐
相关产品推荐

