2019/3/20日:本地测试通过,mvn打包报错
- 异常原因:打包报错,异常是 bigDecimal 转 long 报错
- 解决过程:
- mvn 打包报错,从错误日志中定位到代码?代码如下
-
ClassA a=new ClassA();// 引用的外部包 a.setTotalNum(new bigDecimal("1111")); // mvn 打包出错,日志中定位的行数 a.setFileNum(new bizDecimal("111").longValue());
- 因该行没有没有出现 BigDecimal 转 Long 的代码,怀疑和svn上代码不一致,使用svn更新代码后重新打包,发现仍然报错;
- 将该行注释掉,重新打包发现mvn不再报错,确认就是该行代码引起;
- 进入ClassA 类查看源码,类型没问题,代码没问题;
- 确认自己代码没问题,而架包是引用的,怀疑打包过程中引用的不是该架包;将本地仓库该架包删除,重新打包,问题结果;
- 问题引起的原因
- 下游更新架包未通知,导致本地仓库架包与中央仓库架包不一致
- 不了解 mvn 打包的过程
- mvn 打包过程
- mvn 打包是会查看引用的包是release版本还是snapshort版本,如果是release版本,将本地仓库的包直接打进架包
- 如果引用的包是snapshort版本,mvn会查看本地包的时间与中央仓库的包的更新时间做对比,如果中央仓库的包的更新时间大于本地架包,将自动引用中央仓库架包,如果时间相同或本地大于中央仓库,将使用本地的包