为什么maven编译时,会报“不再支持源选项 5。请使用 6 或更高版本“

为什么maven编译时,会报“不再支持源选项 5。请使用 6 或更高版本。”

 

  • 现象

今天,在使用apache-maven-3.3.9版本,编译时,报了“不再支持源选项 5。请使用 6 或更高版本。”。

    

  • 解决办法

      网上查了下,有两种方式可以解决这个问题:

      1.  在maven的的setting.xml文件中,指定编译level。

      2.  在maven项目的pom.xml文件中,制定编译level。

  • 原因分析

我用的jre是 jdk-10.0.2,那为什么maven在我不改配置(setting.xml或 pom.xml)的情况下,一定要编译成1.5呢?这说明,一定是maven有什么默认设置。那这个默认设置在哪呢?如果我们改了这个设置,是不是就不用在setting.xml或 pom.xml中改了。

    接下来,编译时,加上“-debug”参数看看,即“maven -debug compile”,在输出的日志中,我们从下往上找,看到了熟悉的部分,如下:

这部分,明显是编译java文件时,编译器所用的参数。那这个1.5是从哪来的?继续往前找(搜索文本1.5),依次找到了如下的三个部分的内容:

 

 

 

从这部分,可以看出

  1. maven使用的默认编译插件是 maven-compiler-plugin:3.1,而这个插件的默认的编译器是javac, 编译level是1.5.
  2. 这个插件在哪呢?从截图中可看出,猜测,应该是在maven仓库中。到仓库中,看一下,结果如下:

  1. 解压maven-compiler-plugin-3.1.jar,在压缩包中的plugin.xml中,发现了默认的编译器是javac,默认level是1.5的配置。如下:

这就说明。在不改变setting.xml和pom.xml的情况下,maven使用的编译插件maven-compiler-plugin-3.1,且这个编译插件的默认编译器是javac编译level是1.5,这些都是在插件的配置文件中指定

前边说过,我用的jdk是10.0.2。我们测试一下jdk10是否能够按照1.5 level编译。如下:

 

从结果来看,jdk10显然是不支持1.5 level编译的。

经过这些,我们可以看到,“不再支持源选项 5。请使用 6 或更高版本。”这个提示,归根基地,是由我的jdk版本和所要求编译level不匹配照成的。经过测试,我把操作系统默认的java改为1.6,则maven不再报这个错误。

就我的情况来说,我用的maven(apache-maven-3.3.9版本),默认使用的编译插件是maven-compiler-plugin-3.1,该插件的默认编译level是1.5,且使用javac编译。这就说明,是因为我的maven使用操作系统默认的javac,而这个javac是不支持1.5 level编译的。

所以,网上的两种方式,我们在改setting.xml或pom.xml文件时,改这个编译level,实际上都是改的maven的所用编译器的编译level。

其实,还有编译参数可以修改,可以参照官网,如下:

https://maven.apache.org/plugins/maven-compiler-plugin/

https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html

 

        但是,为什么我用的maven版本默认的编译插件是maven-compiler-plugin-3.1,而我在maven仓库的编译插件目录里看到了其他编译插件,其中3.8.1插件的编译level就是1.7,为什么我的maven默认不使用3.8.1的编译插件,而非要使用3.1版本的呢?在下期的maven插件管理中,进一步说明。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值