【maven】maven编译版本和jdk 版本?

   下午更新代码的时候,报了如下问题。当时很奇怪,第一感觉,jdk出现了问题,但是确认了很多次,jdk没有问题。然后去小何那里,发现更新代码之后,出现了同样的问题。反馈给架构组,才发现,原来是maven插件编译的版本由原来的1.7被修改成为了1.6,而我们idea中配置的jdk为1.8,所以导致使用Java7特性的一些代码,会报错。


1.问题截图



大家可以发现,List<ChooseCourseModel> chooseCourseModelList=new ArrayList<>();报错了。错误提示,Java 1.6中不支持这种泛型写法。

更改为List<ChooseCourseModel> chooseCourseModeList=new ArrayList<ChooseCourseModel>();之后,错误消失。


2.原因


    maven是个项目管理工具,如果我们不告诉它我们的代码要使用什么样的jdk版本编译的话,它就会用maven-compiler-plugin默认的jdk版本进行处理,这样就容易出现版本不匹配的问题。例如上图中的问题:代码中使用了jdk1.7的新特性,但是maven在编译的时候,使用的是jdk1.6的版本,那么这一段代码完全不能够编译成为.class文件的。所以为了处理这种情况,我们在构建maven项目的时候,需要配置maven-compiler-plugin插件的版本。


3.为什么要修改?


   架构组告知,是root.pom文件中的maven插件编译版本,由原来的1.7更改为了1.6.

更改原因是:版本越低,兼容性越好,以后系统上线之后,可以更好地适应各个高校的使用。这个我理解,但是我不太懂的是,maven项目编译的项目怎么跟JDK版本关联起来的?接下来主要了解一下maven-compier-plugin插件的使用。


4.maven-compiler-plugin插件


    maven 本质上是一个插件框架,它的核心并不执行具体的构建任务,所有的这些任务全都交给插件来完成。例如编译源代码是由maven-compiler-plugin来完成的。此插件用来编译位于src/main/java目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。由于历史原因,Maven的核心插件之一,maven3 compiler插件默认值支持Java1.5,因此我们需要配置该插件支持适合自己项目的版本。

如在下图是在项目中配置的maven-compiler-plugin。


    <!-- maven版本 -->
        <!--工程打包自动添加时间戳后缀 -->
        <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>    <!-- 编译时的编码 -->
        <maven.compiler.source>1.7</maven.compiler.source>            <!-- 编译源代码 jdk版本编译 -->
        <maven.compiler.target>1.7</maven.compiler.target>            <!-- 编译源代码 版本 -->
        <maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>        <!-- 编译插件版本号控制 -->
        <maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>         <!-- 编译插件版本号控制 -->


compiler-plugin主要注意问题:

(1):maven 2.1默认用jdk 1.3来编译,maven 3 貌似是用jdk 1.5,如果项目用的jdk 1.6也会有问题,compiler插件可以指定JDK版本为1.6。
(2):windows默认使用GBK编码,java项目经常编码为utf8,也需要在compiler插件中指出,否则中文乱码可能会出现编译错误。


5.参考连接:

Maven实战(八)——常用Maven插件介绍(下)

maven-compiler-plugin的使用


小结:

maven还需要再次系列学习,遇到问题了,才知道原来学习的是多么浅薄。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值