I did a
find /path/to/nexusdata/central -name "*.jar" > alljarsfiltered.txt
and then run this Java application:
package mavenchecker; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.stream.Stream; public class MavenChecker { public static ArrayList<String> errors = new ArrayList<String>(); public static ArrayList<String> nonexisting = new ArrayList<String>(); static int count = 0; public static void main(String[] args) { String fileName = "/home/centos/Downloads/alljarsfiltered.txt"; // read file into stream, try-with-resources try (Stream<String> stream = Files.lines(Paths.get(fileName)).parallel()) { stream.forEach((line) -> checkLine(line)); } catch (IOException e) { e.printStackTrace(); } for (String error : errors) { System.out.println("ERROR : " + error); } for (String nonexistingItem : nonexisting) { System.out.println("nonexisting : " + nonexistingItem); } } private static void checkLine(String line) { count++; if (count % 100 == 0) { System.out.println("COUNT " + count); } if (!line.endsWith(".jar")) return; String gavstring = line.replace("/path/to/nexusdata/central/", ""); String[] parts = gavstring.split("/"); int len = parts.length; if (len < 4) { System.err.println("invalid length for gavstring " + gavstring + " len = " + len + " should be at least 4"); errors.add(gavstring); } else { String filename = parts[len - 1]; String version = parts[len - 2]; String artifactid = parts[len - 3]; String group = String.join(".", Arrays.copyOfRange(parts, 0, len - 3)); String message = "filename=" + filename + " group=" + group + " artifactid=" + artifactid + " version=" + version; //System.out.println(message); boolean exists = exists("https://repo.maven.apache.org/maven2/" + gavstring); if (!exists) nonexisting.add(gavstring); } } public static boolean exists(String URLName){ try { HttpURLConnection.setFollowRedirects(false); // note : you may also need // HttpURLConnection.setInstanceFollowRedirects(false) HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection(); con.setRequestMethod("HEAD"); return (con.getResponseCode() == HttpURLConnection.HTTP_OK); } catch (Exception e) { e.printStackTrace(); return false; } } }
No comments:
Post a Comment