当前位置: 代码迷 >> 综合 >> 本地测试通过,mvn打包报错
  详细解决方案

本地测试通过,mvn打包报错

热度:52   发布时间:2024-01-20 17:48:07.0

2019/3/20日:本地测试通过,mvn打包报错

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