欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java校验maven下载的jar文件

程序员文章站 2022-07-01 23:14:08
有时候maven真的很坑! 有时候提示invalid LOC header (bad signat signature), 但又有时候什么都不提示,工程报错,情况有肯多中,不知道大家遇到过几种诡异的. ......

有时候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);
    }
  }
}