java校验maven下载的jar文件

有时候maven真的很坑!

有时候提示invalid LOC header (bad signat signature),

但又有时候什么都不提示,工程报错,情况有肯多中,不知道大家遇到过几种诡异的.

很多人说加-U参数或在maven插件选择强制刷新等操作,但很不好使,一点用都没有.

今天我就遇到POM提示第一行错误,这怎么可能?其他任何地方都不报错,用mvn命令的时候才能看到jar invalid.

我还遇到整个spring的项目只有test报错,其他的都不报错,编辑器里提示的Unknown Error~

真没法玩了~我知道肯定有一个或几个jar下载的有问题.但就算你知道了难道一个一个去找删?一个还好说,有时候5,6个真是浪费时间.

不如就写个代码跑一下吧~

public class MvnCheckJar {

  public static void main(String[] args) throws Exception {
      
    String localMvnPath = "F:/mvnlib";
    // 遍历文件夹,找出jar\pom和效验文件进行对比,如果不相符,则删除
    getFile(new File(localMvnPath), "jar,pom");
    System.out.println("完毕");
  }

  public static void getFile(File path, String suffixs) throws Exception {
    String[] suffixs_ = new String[] {};
    if (suffixs != null) suffixs_ = suffixs.split(",");
    if (path.isFile()) {
      for (String suffix : suffixs_) {
        if (path.getName().endsWith(suffix)) {
//            System.out.println(path.getAbsolutePath() ); 
          handler(path);
        }
      }
    } else {
      File[] ff = path.listFiles();
      if(ff!=null)
      for (File x : ff) {
        getFile(x, suffixs);
      }
    }
  }

  /**
   * 验证,发现不匹配则删除
   *
   * @throws IOException
   */
  public static void handler(File f) throws Exception {
    File fsha1 = new File(f.getAbsolutePath() + ".sha1");
    if (fsha1.exists()) {
      String sha1 =
          FileUtils.readFileToString(fsha1, "utf-8").replaceAll("(?m).*(\\w{40}).*", "$1").replaceAll("\\n|\\r", "");
      String currsha1 = sha1(f);
      if(!sha1.equals(currsha1)){//如果不等,则删除 当前文件和sha1
//          System.out.println("sha1file: " + sha1 ); 
          fsha1.delete();
          f.delete();
      System.out.println(sha1 + " , " + currsha1 + " , " + f.getAbsolutePath());
      }

    } else {
      f.delete();
    }
  }

  public static String sha1(File f) throws Exception {
    try (FileInputStream fis = new FileInputStream(f)) {
      return org.apache.commons.codec.digest.DigestUtils.sha1Hex(fis);
    }
  }
}

转载于:https://my.oschina.net/tester/blog/3051058

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值