将Maven从Java 9迁移至Java 10时maven-compiler-plugin报错求助
解决Maven从Java9迁移到Java10时maven-compiler-plugin报错的问题
我之前升级Java版本时也碰到过一模一样的问题,老版本的maven编译插件对新Java版本的支持确实跟不上,咱们一步步来搞定它:
先升级maven-compiler-plugin的版本
你用的3.7.0版本是在Java10发布前的版本,对Java10的编译特性支持不完善。建议直接升级到3.8.1版本(这个版本是当时适配Java10比较稳定的选择),或者更高的兼容版本。修改后的pom.xml插件配置参考:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>10</source> <target>10</target> <release>10</release> <!-- 只有当你的环境里默认javac不是Java10时,才需要指定executable,否则可以删掉这一行 --> <executable>javac10</executable> </configuration> </plugin>简化配置(推荐操作)
从Java9开始,release参数已经可以同时指定源码和目标字节码的版本,所以你可以把配置简化成只保留release,这样既简洁又不容易出现source/target版本不一致的问题:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>10</release> <executable>javac10</executable> </configuration> </plugin>检查环境兼容性
- 确保你的Maven版本在3.5.4及以上,老版本Maven对Java10的兼容性也有问题,运行
mvn -v就能查看版本 - 执行
javac -version确认当前环境的默认javac是否是Java10,如果是全局配置,那executable参数其实可以不用写,插件会自动识别
- 确保你的Maven版本在3.5.4及以上,老版本Maven对Java10的兼容性也有问题,运行
清理缓存重新构建
修改完配置后,先跑mvn clean清掉之前的编译缓存,再执行mvn compile或者mvn install,避免旧的编译文件影响新的构建过程。
如果做完这些还是有问题,可以检查下项目里其他插件(比如maven-surefire-plugin)是否也需要升级适配Java10,但大部分情况下,升级编译插件就能解决核心问题啦。
内容的提问来源于stack exchange,提问作者GOXR3PLUS
相关产品推荐
相关产品推荐

