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

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

1.问题截图

c4fac86c362a174032b1a1e834b89d14.png

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

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

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。

yyyyMMddHHmmss

UTF-8

1.7

1.7

3.6.1

2.10

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还需要再次系列学习,遇到问题了,才知道原来学习的是多么浅薄。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值