├── .bach ├── bach.info │ └── module-info.java └── bin │ ├── bach │ ├── bach.bat │ ├── boot.java │ ├── boot.jsh │ ├── com.github.sormuras.bach@17-ea.jar │ └── init.java ├── .github ├── FUNDING.yml └── workflows │ ├── ci.yml │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── com.github.sormuras.modules ├── com │ └── github │ │ └── sormuras │ │ └── modules │ │ ├── Main.java │ │ ├── ModuleLookupToolProvider.java │ │ └── modules.properties └── module-info.java ├── doc ├── README.md ├── Top1000-2019.txt ├── Top1000-2019.txt.md ├── Top1000-2020.txt ├── Top1000-2020.txt.md ├── Top1000-2021.txt ├── Top1000-2021.txt.md ├── Top1000-2022.txt ├── Top1000-2022.txt.md ├── Top1000-2023.txt ├── Top1000-2023.txt.md ├── Top1000-2024.txt ├── Top1000-2024.txt.md ├── WatchList.txt ├── WatchList.txt.md ├── badges │ ├── badges-org.junit.jupiter-junit-jupiter.md │ ├── badges-org.slf4j-slf4j-api.md │ └── badges.txt └── suspicious │ ├── README.md │ ├── illegal-automatic-module-names.txt │ └── impostor-modules.md └── src ├── Database.java └── Scanner.java /.bach/bach.info/module-info.java: -------------------------------------------------------------------------------- 1 | import com.github.sormuras.bach.ProjectInfo; 2 | import com.github.sormuras.bach.ProjectInfo.Tools; 3 | import com.github.sormuras.bach.project.JavaStyle; 4 | 5 | @ProjectInfo( 6 | version = "0-ea", 7 | format = JavaStyle.GOOGLE, 8 | tools = @Tools(limit = {"javac", "jar"}), 9 | compileModulesForJavaRelease = 11, 10 | includeSourceFilesIntoModules = true) 11 | module bach.info { 12 | requires com.github.sormuras.bach; 13 | } 14 | -------------------------------------------------------------------------------- /.bach/bin/bach: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | if [[ $1 == 'boot' ]]; then 4 | javac --module-path .bach/bin --add-modules com.github.sormuras.bach -d .bach/workspace/.bach .bach/bin/boot.java 5 | jshell --module-path .bach/bin --add-modules com.github.sormuras.bach --class-path .bach/workspace/.bach .bach/bin/boot.jsh 6 | exit $? 7 | fi 8 | 9 | if [[ $1 == 'init' ]]; then 10 | if [[ -z $2 ]]; then 11 | echo "Usage: bach init VERSION" 12 | exit 1 13 | fi 14 | java .bach/bin/init.java $2 15 | exit $? 16 | fi 17 | 18 | java --module-path .bach/bin --module com.github.sormuras.bach "$@" 19 | exit $? 20 | -------------------------------------------------------------------------------- /.bach/bin/bach.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | IF "%~1" == "boot" ( 4 | javac --module-path .bach\bin --add-modules com.github.sormuras.bach -d .bach\workspace\.bach .bach\bin\boot.java 5 | jshell --module-path .bach\bin --add-modules com.github.sormuras.bach --class-path .bach\workspace\.bach .bach\bin\boot.jsh 6 | EXIT /B %ERRORLEVEL% 7 | ) 8 | 9 | IF "%~1" == "init" ( 10 | IF "%~2" == "" ( 11 | ECHO "Usage: bach init VERSION" 12 | EXIT /B 1 13 | ) 14 | java .bach\bin\init.java %2 15 | EXIT /B %ERRORLEVEL% 16 | ) 17 | 18 | java --module-path .bach\bin --module com.github.sormuras.bach %* 19 | EXIT /B %ERRORLEVEL% 20 | -------------------------------------------------------------------------------- /.bach/bin/boot.java: -------------------------------------------------------------------------------- 1 | package bin; 2 | 3 | import com.github.sormuras.bach.Bach; 4 | import com.github.sormuras.bach.Command; 5 | import com.github.sormuras.bach.Options; 6 | import com.github.sormuras.bach.ProjectInfo; 7 | import com.github.sormuras.bach.project.Property; 8 | import java.io.PrintWriter; 9 | import java.io.StringWriter; 10 | import java.lang.module.ModuleDescriptor; 11 | import java.lang.module.ModuleFinder; 12 | import java.lang.module.ModuleReference; 13 | import java.lang.reflect.Method; 14 | import java.lang.reflect.Modifier; 15 | import java.net.URI; 16 | import java.nio.file.Files; 17 | import java.nio.file.Path; 18 | import java.util.ArrayList; 19 | import java.util.Comparator; 20 | import java.util.List; 21 | import java.util.Locale; 22 | import java.util.Optional; 23 | import java.util.Set; 24 | import java.util.StringJoiner; 25 | import java.util.TreeSet; 26 | import java.util.concurrent.atomic.AtomicReference; 27 | import java.util.function.Consumer; 28 | import java.util.function.Predicate; 29 | import java.util.spi.ToolProvider; 30 | import java.util.stream.Collectors; 31 | import java.util.stream.Stream; 32 | 33 | @SuppressWarnings("unused") 34 | public class boot { 35 | 36 | public static Bach bach() { 37 | return bach.get(); 38 | } 39 | 40 | public static void beep() { 41 | System.out.print("\007"); // 🔔 42 | System.out.flush(); 43 | } 44 | 45 | public static void refresh() { 46 | utils.refresh(ProjectInfo.MODULE); 47 | } 48 | 49 | public static void scaffold() throws Exception { 50 | files.createBachInfoModuleDescriptor(); 51 | files.createBachInfoBuilderClass(); 52 | exports.idea(); 53 | } 54 | 55 | public interface exports { 56 | 57 | static void idea() throws Exception { 58 | var idea = bach().folders().root(".idea"); 59 | if (Files.exists(idea)) { 60 | out("IntelliJ's IDEA directory already exits: %s", idea); 61 | return; 62 | } 63 | 64 | var name = bach().project().name(); 65 | Files.createDirectories(idea); 66 | ideaMisc(idea); 67 | ideaRootModule(idea, name); 68 | ideaModules(idea, List.of(name, "bach.info")); 69 | if (Files.exists(bach().folders().root(".bach/bach.info"))) ideaBachInfoModule(idea); 70 | ideaLibraries(idea); 71 | } 72 | 73 | private static void ideaMisc(Path idea) throws Exception { 74 | Files.writeString( 75 | idea.resolve(".gitignore"), 76 | """ 77 | # Default ignored files 78 | /shelf/ 79 | /workspace.xml 80 | """); 81 | 82 | Files.writeString( 83 | idea.resolve("misc.xml"), 84 | """ 85 | 86 | 87 | 88 | 89 | 90 | 91 | """); 92 | } 93 | 94 | private static void ideaModules(Path idea, List files) throws Exception { 95 | var modules = new StringJoiner("\n"); 96 | for (var file : files) { 97 | modules.add( 98 | """ 99 | """ 100 | .replace("{{FILE}}", file) 101 | .strip()); 102 | } 103 | 104 | Files.writeString( 105 | idea.resolve("modules.xml"), 106 | """ 107 | 108 | 109 | 110 | 111 | {{MODULES}} 112 | 113 | 114 | 115 | """ 116 | .replace("{{MODULES}}", modules.toString().indent(6))); 117 | } 118 | 119 | private static void ideaRootModule(Path idea, String name) throws Exception { 120 | Files.writeString( 121 | idea.resolve(name + ".iml"), 122 | """ 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | """); 135 | } 136 | 137 | private static void ideaBachInfoModule(Path idea) throws Exception { 138 | Files.writeString( 139 | idea.resolve("bach.info.iml"), 140 | """ 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | """); 154 | } 155 | 156 | private static void ideaLibraries(Path idea) throws Exception { 157 | var libraries = Files.createDirectories(idea.resolve("libraries")); 158 | 159 | Files.writeString( 160 | libraries.resolve("bach_bin.xml"), 161 | """ 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | """); 173 | 174 | Files.writeString( 175 | libraries.resolve("bach_external_modules.xml"), 176 | """ 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | """); 188 | } 189 | } 190 | 191 | public interface files { 192 | 193 | static void createBachInfoModuleDescriptor() throws Exception { 194 | var file = bach().folders().root(".bach/bach.info/module-info.java"); 195 | if (Files.exists(file)) { 196 | out("File already exists: %s", file); 197 | return; 198 | } 199 | out("Create build information module descriptor: %s", file); 200 | var text = 201 | """ 202 | @com.github.sormuras.bach.ProjectInfo ( 203 | name = "{{PROJECT-NAME}}", 204 | version = "{{PROJECT-VERSION}}" 205 | ) 206 | module bach.info { 207 | requires com.github.sormuras.bach; 208 | provides com.github.sormuras.bach.Bach.Provider with bach.info.Builder; 209 | } 210 | """ 211 | .replace("{{PROJECT-NAME}}", bach().project().name()) 212 | .replace("{{PROJECT-VERSION}}", bach().project().version()); 213 | Files.createDirectories(file.getParent()); 214 | Files.writeString(file, text); 215 | } 216 | 217 | static void createBachInfoBuilderClass() throws Exception { 218 | var file = bach().folders().root(".bach/bach.info/bach/info/Builder.java"); 219 | out("Create builder class: %s", file); 220 | var text = 221 | """ 222 | package bach.info; 223 | 224 | import com.github.sormuras.bach.*; 225 | 226 | public class Builder extends Bach { 227 | public static void main(String... args) { 228 | Bach.main(args); 229 | } 230 | 231 | public static Provider provider() { 232 | return Builder::new; 233 | } 234 | 235 | private Builder(Options options) { 236 | super(options); 237 | } 238 | } 239 | """; 240 | Files.createDirectories(file.getParent()); 241 | Files.writeString(file, text); 242 | } 243 | 244 | static void dir() { 245 | dir(""); 246 | } 247 | 248 | static void dir(String folder) { 249 | dir(folder, "*"); 250 | } 251 | 252 | static void dir(String folder, String glob) { 253 | var win = System.getProperty("os.name", "?").toLowerCase(Locale.ROOT).contains("win"); 254 | var directory = Path.of(folder).toAbsolutePath().normalize(); 255 | var paths = new ArrayList(); 256 | try (var stream = Files.newDirectoryStream(directory, glob)) { 257 | for (var path : stream) { 258 | if (win && Files.isHidden(path)) continue; 259 | paths.add(path); 260 | } 261 | } catch (Exception exception) { 262 | out(exception); 263 | } 264 | paths.sort( 265 | (Path p1, Path p2) -> { 266 | var one = Files.isDirectory(p1); 267 | var two = Files.isDirectory(p2); 268 | if (one && !two) return -1; // directory before file 269 | if (!one && two) return 1; // file after directory 270 | return p1.compareTo(p2); // order lexicographically 271 | }); 272 | long files = 0; 273 | long bytes = 0; 274 | for (var path : paths) { 275 | var name = path.getFileName().toString(); 276 | if (Files.isDirectory(path)) out("%-15s %s", "[+]", name); 277 | else 278 | try { 279 | files++; 280 | var size = Files.size(path); 281 | bytes += size; 282 | out("%,15d %s", size, name); 283 | } catch (Exception exception) { 284 | out(exception); 285 | return; 286 | } 287 | } 288 | var all = paths.size(); 289 | if (all == 0) { 290 | out("Directory %s is empty", directory); 291 | return; 292 | } 293 | out(""); 294 | out("%15d path%s in directory %s", all, all == 1 ? "" : "s", directory); 295 | out("%,15d bytes in %d file%s", bytes, files, files == 1 ? "" : "s"); 296 | } 297 | 298 | static void tree() { 299 | tree(""); 300 | } 301 | 302 | static void tree(String folder) { 303 | tree(folder, name -> name.contains("module-info")); 304 | } 305 | 306 | static void tree(String folder, Predicate fileNameFilter) { 307 | var directory = Path.of(folder).toAbsolutePath(); 308 | out("%s", folder.isEmpty() ? directory : folder); 309 | var files = tree(directory, " ", fileNameFilter); 310 | out(""); 311 | out("%d file%s in tree of %s", files, files == 1 ? "" : "s", directory); 312 | } 313 | 314 | private static int tree(Path directory, String indent, Predicate filter) { 315 | var win = System.getProperty("os.name", "?").toLowerCase(Locale.ROOT).contains("win"); 316 | var files = 0; 317 | try (var stream = Files.newDirectoryStream(directory, "*")) { 318 | for (var path : stream) { 319 | if (win && Files.isHidden(path)) continue; 320 | var name = path.getFileName().toString(); 321 | if (Files.isDirectory(path)) { 322 | out(indent + name + "/"); 323 | if (name.equals(".git")) continue; 324 | files += tree(path, indent + " ", filter); 325 | continue; 326 | } 327 | files++; 328 | if (filter.test(name)) out(indent + name); 329 | } 330 | } catch (Exception exception) { 331 | out(exception); 332 | } 333 | return files; 334 | } 335 | } 336 | 337 | public interface modules { 338 | 339 | /** 340 | * Prints a module description of the given module. 341 | * 342 | * @param module the name of the module to describe 343 | */ 344 | static void describe(String module) { 345 | ModuleFinder.compose( 346 | ModuleFinder.of(bach().folders().workspace("modules")), 347 | ModuleFinder.of(bach().folders().externalModules()), 348 | ModuleFinder.ofSystem()) 349 | .find(module) 350 | .ifPresentOrElse( 351 | reference -> out.accept(describe(reference)), 352 | () -> out.accept("No such module found: " + module)); 353 | } 354 | 355 | /** 356 | * Print a sorted list of all modules locatable by the given module finder. 357 | * 358 | * @param finder the module finder to query for modules 359 | */ 360 | static void describe(ModuleFinder finder) { 361 | var all = finder.findAll(); 362 | all.stream() 363 | .map(ModuleReference::descriptor) 364 | .map(ModuleDescriptor::toNameAndVersion) 365 | .sorted() 366 | .forEach(out); 367 | out("%n-> %d module%s", all.size(), all.size() == 1 ? "" : "s"); 368 | } 369 | 370 | // https://github.com/openjdk/jdk/blob/80380d51d279852f4a24ebbd384921106611bc0c/src/java.base/share/classes/sun/launcher/LauncherHelper.java#L1105 371 | static String describe(ModuleReference mref) { 372 | var md = mref.descriptor(); 373 | var writer = new StringWriter(); 374 | var print = new PrintWriter(writer); 375 | 376 | // one-line summary 377 | print.print(md.toNameAndVersion()); 378 | mref.location().filter(uri -> !isJrt(uri)).ifPresent(uri -> print.format(" %s", uri)); 379 | if (md.isOpen()) print.print(" open"); 380 | if (md.isAutomatic()) print.print(" automatic"); 381 | print.println(); 382 | 383 | // unqualified exports (sorted by package) 384 | md.exports().stream() 385 | .filter(e -> !e.isQualified()) 386 | .sorted(Comparator.comparing(ModuleDescriptor.Exports::source)) 387 | .forEach(e -> print.format("exports %s%n", toString(e.source(), e.modifiers()))); 388 | 389 | // dependences (sorted by name) 390 | md.requires().stream() 391 | .sorted(Comparator.comparing(ModuleDescriptor.Requires::name)) 392 | .forEach(r -> print.format("requires %s%n", toString(r.name(), r.modifiers()))); 393 | 394 | // service use and provides (sorted by name) 395 | md.uses().stream().sorted().forEach(s -> print.format("uses %s%n", s)); 396 | md.provides().stream() 397 | .sorted(Comparator.comparing(ModuleDescriptor.Provides::service)) 398 | .forEach( 399 | ps -> { 400 | var names = String.join("\n", new TreeSet<>(ps.providers())); 401 | print.format("provides %s with%n%s", ps.service(), names.indent(2)); 402 | }); 403 | 404 | // qualified exports (sorted by package) 405 | md.exports().stream() 406 | .filter(ModuleDescriptor.Exports::isQualified) 407 | .sorted(Comparator.comparing(ModuleDescriptor.Exports::source)) 408 | .forEach( 409 | e -> { 410 | var who = String.join("\n", new TreeSet<>(e.targets())); 411 | print.format("qualified exports %s to%n%s", e.source(), who.indent(2)); 412 | }); 413 | 414 | // open packages (sorted by package) 415 | md.opens().stream() 416 | .sorted(Comparator.comparing(ModuleDescriptor.Opens::source)) 417 | .forEach( 418 | opens -> { 419 | if (opens.isQualified()) print.print("qualified "); 420 | print.format("opens %s", toString(opens.source(), opens.modifiers())); 421 | if (opens.isQualified()) { 422 | var who = String.join("\n", new TreeSet<>(opens.targets())); 423 | print.format(" to%n%s", who.indent(2)); 424 | } else print.println(); 425 | }); 426 | 427 | // non-exported/non-open packages (sorted by name) 428 | var concealed = new TreeSet<>(md.packages()); 429 | md.exports().stream().map(ModuleDescriptor.Exports::source).forEach(concealed::remove); 430 | md.opens().stream().map(ModuleDescriptor.Opens::source).forEach(concealed::remove); 431 | concealed.forEach(p -> print.format("contains %s%n", p)); 432 | 433 | return writer.toString().stripTrailing(); 434 | } 435 | 436 | private static String toString(String name, Set modifiers) { 437 | var strings = modifiers.stream().map(e -> e.toString().toLowerCase()); 438 | return Stream.concat(Stream.of(name), strings).collect(Collectors.joining(" ")); 439 | } 440 | 441 | private static boolean isJrt(URI uri) { 442 | return (uri != null && uri.getScheme().equalsIgnoreCase("jrt")); 443 | } 444 | 445 | private static void findRequiresDirectivesMatching(ModuleFinder finder, String regex) { 446 | var descriptors = 447 | finder.findAll().stream() 448 | .map(ModuleReference::descriptor) 449 | .sorted(Comparator.comparing(ModuleDescriptor::name)) 450 | .toList(); 451 | for (var descriptor : descriptors) { 452 | var matched = 453 | descriptor.requires().stream() 454 | .filter(requires -> requires.name().matches(regex)) 455 | .toList(); 456 | if (matched.isEmpty()) continue; 457 | out.accept(descriptor.toNameAndVersion()); 458 | matched.forEach(requires -> out.accept(" requires " + requires)); 459 | } 460 | } 461 | 462 | interface external { 463 | 464 | static void delete(String module) throws Exception { 465 | var jar = bach().computeExternalModuleFile(module); 466 | out("Delete %s", jar); 467 | Files.deleteIfExists(jar); 468 | } 469 | 470 | static void purge() throws Exception { 471 | var externals = bach().folders().externalModules(); 472 | if (!Files.isDirectory(externals)) return; 473 | try (var jars = Files.newDirectoryStream(externals, "*.jar")) { 474 | for (var jar : jars) 475 | try { 476 | out("Delete %s", jar); 477 | Files.deleteIfExists(jar); 478 | } catch (Exception exception) { 479 | out("Delete failed: %s", jar); 480 | } 481 | } 482 | } 483 | 484 | /** Prints a list of all external modules. */ 485 | static void list() { 486 | describe(ModuleFinder.of(bach().folders().externalModules())); 487 | } 488 | 489 | static void load(String module) { 490 | bach().loadExternalModules(module); 491 | var set = bach().computeMissingExternalModules(); 492 | if (set.isEmpty()) return; 493 | out(""); 494 | missing.list(set); 495 | } 496 | 497 | static void findRequires(String regex) { 498 | var finder = ModuleFinder.of(bach().folders().externalModules()); 499 | findRequiresDirectivesMatching(finder, regex); 500 | } 501 | 502 | interface missing { 503 | 504 | static void list() { 505 | list(bach().computeMissingExternalModules()); 506 | } 507 | 508 | private static void list(Set modules) { 509 | var size = modules.size(); 510 | modules.stream().sorted().forEach(out); 511 | out("%n-> %d module%s missing", size, size == 1 ? " is" : "s are"); 512 | } 513 | 514 | static void resolve() { 515 | bach().loadMissingExternalModules(); 516 | } 517 | } 518 | 519 | interface prepared { 520 | static void loadComGithubSormurasModules() { 521 | loadComGithubSormurasModules("0-ea"); 522 | } 523 | 524 | static void loadComGithubSormurasModules(String version) { 525 | var module = "com.github.sormuras.modules"; 526 | var jar = module + "@" + version + ".jar"; 527 | var uri = "https://github.com/sormuras/modules/releases/download/" + version + "/" + jar; 528 | bach().browser().load(uri, bach().computeExternalModuleFile(module)); 529 | } 530 | } 531 | } 532 | 533 | interface system { 534 | 535 | /** Prints a list of all system modules. */ 536 | static void list() { 537 | describe(ModuleFinder.ofSystem()); 538 | } 539 | 540 | static void findRequires(String regex) { 541 | findRequiresDirectivesMatching(ModuleFinder.ofSystem(), regex); 542 | } 543 | } 544 | } 545 | 546 | public interface tools { 547 | 548 | static String describe(ToolProvider provider) { 549 | var name = provider.name(); 550 | var module = provider.getClass().getModule(); 551 | var by = 552 | Optional.ofNullable(module.getDescriptor()) 553 | .map(ModuleDescriptor::toNameAndVersion) 554 | .orElse(module.toString()); 555 | var info = 556 | switch (name) { 557 | case "bach" -> "Build modular Java projects"; 558 | case "google-java-format" -> "Reformat Java sources to comply with Google Java Style"; 559 | case "jar" -> "Create an archive for classes and resources, and update or restore them"; 560 | case "javac" -> "Read Java compilation units (*.java) and compile them into classes"; 561 | case "javadoc" -> "Generate HTML pages of API documentation from Java source files"; 562 | case "javap" -> "Disassemble one or more class files"; 563 | case "jdeps" -> "Launch the Java class dependency analyzer"; 564 | case "jlink" -> "Assemble and optimize a set of modules into a custom runtime image"; 565 | case "jmod" -> "Create JMOD files and list the content of existing JMOD files"; 566 | case "jpackage" -> "Package a self-contained Java application"; 567 | case "junit" -> "Launch the JUnit Platform"; 568 | default -> provider.toString(); 569 | }; 570 | return "%s (provided by module %s)\n%s".formatted(name, by, info.indent(2)).trim(); 571 | } 572 | 573 | static void list() { 574 | var providers = bach().computeToolProviders().toList(); 575 | var size = providers.size(); 576 | providers.stream() 577 | .map(tools::describe) 578 | .sorted() 579 | .map(description -> "\n" + description) 580 | .forEach(out); 581 | out("%n-> %d tool%s", size, size == 1 ? "" : "s"); 582 | } 583 | 584 | static void runs() { 585 | var list = bach().logbook().runs(); 586 | var size = list.size(); 587 | list.forEach(out); 588 | out("%n-> %d run%s", size, size == 1 ? "" : "s"); 589 | } 590 | 591 | static void run(String tool, Object... args) { 592 | var command = Command.of(tool).addAll(args); 593 | var recording = bach().run(command); 594 | if (!recording.errors().isEmpty()) out.accept(recording.errors()); 595 | if (!recording.output().isEmpty()) out.accept(recording.output()); 596 | if (recording.isError()) 597 | out.accept("Tool " + tool + " returned exit code " + recording.code()); 598 | } 599 | } 600 | 601 | public interface utils { 602 | private static void describeClass(Class type) { 603 | Stream.of(type.getDeclaredMethods()) 604 | .filter(utils::describeOnlyInterestingMethods) 605 | .sorted(Comparator.comparing(Method::getName).thenComparing(Method::getParameterCount)) 606 | .map(utils::describeMethod) 607 | .forEach(out); 608 | list(type); 609 | } 610 | 611 | private static boolean describeOnlyInterestingClasses(Class type) { 612 | if (type.isRecord()) return false; 613 | if (type.equals(utils.class)) return false; 614 | var modifiers = type.getModifiers(); 615 | return Modifier.isPublic(modifiers) && Modifier.isStatic(modifiers); 616 | } 617 | 618 | private static boolean describeOnlyInterestingMethods(Method method) { 619 | var modifiers = method.getModifiers(); 620 | return Modifier.isPublic(modifiers) && Modifier.isStatic(modifiers); 621 | } 622 | 623 | private static String describeMethod(Method method) { 624 | var generic = method.toGenericString(); 625 | var line = generic.replace('$', '.'); 626 | var head = line.indexOf("bin.boot."); 627 | if (head > 0) line = line.substring(head + 9); 628 | var tail = line.indexOf(") throws"); 629 | if (tail > 0) line = line.substring(0, tail + 1); 630 | if (!line.endsWith("()")) { 631 | line = line.replace("com.github.sormuras.bach.", ""); 632 | line = line.replace("java.util.function.", ""); 633 | line = line.replace("java.util.spi.", ""); 634 | line = line.replace("java.util.", ""); 635 | line = line.replace("java.lang.module.", ""); 636 | line = line.replace("java.lang.", ""); 637 | } 638 | if (line.isEmpty()) throw new RuntimeException("Empty description line for: " + generic); 639 | return line; 640 | } 641 | 642 | static void api() { 643 | list(boot.class); 644 | } 645 | 646 | private static void list(Class current) { 647 | Stream.of(current.getDeclaredClasses()) 648 | .filter(utils::describeOnlyInterestingClasses) 649 | .sorted(Comparator.comparing(Class::getName)) 650 | .peek(declared -> out("")) 651 | .forEach(utils::describeClass); 652 | } 653 | 654 | static void refresh(String module) { 655 | var load = Options.key(Property.BACH_INFO); 656 | var options = Options.of(load, module); 657 | try { 658 | var bach = Bach.of(options); 659 | set(bach); 660 | } catch (Exception exception) { 661 | out( 662 | """ 663 | 664 | Refresh failed: %s 665 | 666 | Falling back to default Bach instance. 667 | """, 668 | exception.getMessage()); 669 | set(new Bach(Options.of())); 670 | } 671 | } 672 | 673 | private static void set(Bach instance) { 674 | bach.set(instance); 675 | } 676 | } 677 | 678 | private static final Consumer out = System.out::println; 679 | private static final AtomicReference bach = new AtomicReference<>(); 680 | 681 | static { 682 | refresh(); 683 | } 684 | 685 | private static void out(Exception exception) { 686 | out(""" 687 | # 688 | # %s 689 | # 690 | """, exception); 691 | } 692 | 693 | private static void out(String format, Object... args) { 694 | out.accept(args == null || args.length == 0 ? format : String.format(format, args)); 695 | } 696 | 697 | /** Hidden default constructor. */ 698 | private boot() {} 699 | } 700 | -------------------------------------------------------------------------------- /.bach/bin/boot.jsh: -------------------------------------------------------------------------------- 1 | // Bach's Boot Script 2 | 3 | System.out.println( 4 | """ 5 | , _ 6 | /|/_) _, _ |) 7 | | \\ / | / |/\\ 8 | |(_/ \\/|_/ \\__/ | |/.boot 9 | 10 | Bach %s 11 | Java Runtime %s 12 | Operating System %s 13 | Working Directory %s 14 | """ 15 | .formatted( 16 | com.github.sormuras.bach.Bach.version(), 17 | Runtime.version(), 18 | System.getProperty("os.name"), 19 | Path.of("").toAbsolutePath() 20 | )) 21 | 22 | /reset 23 | 24 | import static bin.boot.* 25 | import com.github.sormuras.bach.* 26 | 27 | void api() { utils.api(); } 28 | void dir() { files.dir(); } 29 | void pwd() { System.out.println(Path.of("").toAbsolutePath()); } 30 | -------------------------------------------------------------------------------- /.bach/bin/com.github.sormuras.bach@17-ea.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sormuras/modules/117e03011f363cde814f427d32c5345c92962688/.bach/bin/com.github.sormuras.bach@17-ea.jar -------------------------------------------------------------------------------- /.bach/bin/init.java: -------------------------------------------------------------------------------- 1 | import java.io.File; 2 | import java.lang.module.ModuleFinder; 3 | import java.net.URL; 4 | import java.nio.file.Files; 5 | import java.nio.file.Path; 6 | import java.nio.file.StandardCopyOption; 7 | import java.util.List; 8 | 9 | /** Bach's init program. */ 10 | class init { 11 | 12 | public static Path BIN = Path.of(".bach/bin"); 13 | 14 | public static void main(String... args) throws Exception { 15 | var update = Files.isDirectory(BIN); 16 | if (update) { 17 | var module = ModuleFinder.of(BIN).find("com.github.sormuras.bach"); 18 | if (module.isPresent()) Files.delete(Path.of(module.get().location().orElseThrow())); 19 | } else { 20 | Files.createDirectories(BIN); 21 | } 22 | 23 | System.out.println(""); // Load scripts and modules... 24 | var version = args.length == 0 ? "17-ea" : args[0]; 25 | loadScript("bach").toFile().setExecutable(true); 26 | loadScript("bach.bat"); 27 | loadScript("boot.java"); 28 | loadScript("boot.jsh"); 29 | loadScript("init.java"); 30 | loadModule("com.github.sormuras.bach", version); 31 | 32 | var appendPathMessage = 33 | """ 34 | 35 | Append `%s` to the PATH environment variable in order to call 36 | Bach's launch script without using that path prefix every time. 37 | """ 38 | .formatted(BIN); 39 | var prefix = computePathPrefixToBachBinDirectory(() -> System.out.print(appendPathMessage)); 40 | 41 | if (!update) 42 | System.out.printf( // On initialize, print possible next steps. 43 | """ 44 | 45 | %sbach boot 46 | Launch a JShell session with Bach booted into it. 47 | %sbach --help 48 | Print Bach's help message. 49 | """, 50 | prefix, prefix); 51 | 52 | System.out.printf( // Updated/Initialized Bach ${VERSION} in ${DIRECTORY}. 53 | """ 54 | 55 | %sd Bach %s in %s. 56 | """, 57 | update ? "Update" : "Initialize", version, Path.of("").toAbsolutePath()); 58 | } 59 | 60 | static String computePathPrefixToBachBinDirectory(Runnable runnable) { 61 | var prefix = BIN.toString() + File.separator; 62 | var path = System.getenv("PATH"); 63 | if (path == null) return prefix; 64 | var target = BIN.toString(); 65 | var elements = List.of(path.split(File.pathSeparator)); 66 | for (var element : elements) if (element.strip().equals(target)) return ""; 67 | runnable.run(); 68 | return prefix; 69 | } 70 | 71 | static Path loadScript(String name) throws Exception { 72 | var uri = "https://github.com/sormuras/bach/raw/main/.bach/bin/" + name; 73 | return copy(uri, name); 74 | } 75 | 76 | static void loadModule(String name, String version) throws Exception { 77 | var jar = name + "@" + version + ".jar"; 78 | var uri = "https://github.com/sormuras/bach/releases/download/" + version + "/" + jar; 79 | copy(uri, jar); 80 | } 81 | 82 | static Path copy(String uri, String name) throws Exception { 83 | var file = BIN.resolve(name); 84 | try (var stream = new URL(uri).openStream()) { 85 | var size = Files.copy(stream, file, StandardCopyOption.REPLACE_EXISTING); 86 | System.out.printf("%,7d %s%n", size, file); 87 | } 88 | return file; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: sormuras 2 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | schedule: [ cron: '2 3 * * *' ] # every day, 03:02 9 | workflow_dispatch: # trigger workflow run manually 10 | 11 | jobs: 12 | 13 | setup: 14 | runs-on: ubuntu-latest 15 | outputs: 16 | date: ${{ steps.version.outputs.date }} 17 | datetime: ${{ steps.version.outputs.datetime }} 18 | sha: ${{ steps.version.outputs.sha }} 19 | tag: ${{ steps.version.outputs.tag }} 20 | version: ${{ steps.version.outputs.version }} 21 | steps: 22 | - name: 'Compute version string' 23 | id: version 24 | run: | 25 | DATE=$(date -u '+%Y.%m.%d') 26 | DATETIME=$(date -u '+%Y.%m.%d.%H.%M.%S') 27 | echo "date=${DATE}" >> $GITHUB_OUTPUT 28 | echo "datetime=${DATETIME}" >> $GITHUB_OUTPUT 29 | SHA=$(echo "${{ github.sha }}" | cut -c1-7) 30 | TAG=0-ea 31 | VERSION=${TAG}+${SHA} 32 | echo "sha=${SHA}" >> $GITHUB_OUTPUT 33 | echo "tag=${TAG}" >> $GITHUB_OUTPUT 34 | echo "version=${VERSION}" >> $GITHUB_OUTPUT 35 | 36 | build: 37 | needs: [ setup ] 38 | runs-on: ubuntu-latest 39 | steps: 40 | - name: 'Check out repository' 41 | uses: actions/checkout@v4 42 | - name: 'Set up Java' 43 | uses: actions/setup-java@v4 44 | with: 45 | distribution: 'oracle' 46 | java-version: 21 47 | - name: 'Get bucket size' 48 | id: bucket 49 | run: | 50 | SIZE=$(aws s3api list-objects-v2 --bucket java9plusadoption --region us-east-1 --no-sign-request --query "[length(Contents[])]" --output json | jq '.[]') 51 | echo SIZE = ${SIZE} 52 | echo "size=$(echo ${SIZE})" >> $GITHUB_OUTPUT 53 | - name: 'Cache bucket' 54 | id: cache-bucket 55 | uses: actions/cache@v4 56 | with: 57 | path: bucket 58 | key: bucket-${{ steps.bucket.outputs.size }} 59 | restore-keys: bucket- 60 | - name: 'Sync bucket' 61 | if: steps.cache-bucket.outputs.cache-hit != 'true' 62 | run: | 63 | mkdir --parents bucket 64 | du --bytes bucket 65 | aws s3 sync s3://java9plusadoption bucket --region us-east-1 --no-sign-request --only-show-errors 66 | du --bytes bucket 67 | - name: 'Find interesting projects in bucket' 68 | run: | 69 | java \ 70 | -Xmx5G \ 71 | src/Database.java \ 72 | bucket 73 | - name: 'Scan bucket' 74 | run: | 75 | java \ 76 | -Xmx5G \ 77 | -Dbadges=true \ 78 | -Ddoc=true \ 79 | -Dillegal-automatic-module-names=true \ 80 | -Dimpostor-modules=true \ 81 | src/Scanner.java \ 82 | bucket \ 83 | com.github.sormuras.modules/com/github/sormuras/modules/modules.properties 84 | - name: 'Count modules' 85 | id: count-modules 86 | run: echo "size=$(wc --lines < com.github.sormuras.modules/com/github/sormuras/modules/modules.properties)" >> $GITHUB_OUTPUT 87 | - name: 'Build with Bach' 88 | run: | 89 | PATH=.bach/bin:$PATH 90 | bach --project-version ${{ needs.setup.outputs.version }} build 91 | - name: 'Check for modifications' 92 | id: git-status 93 | run: | 94 | git status 95 | echo "modified=$(if [[ -z $(git status --porcelain) ]]; then echo 'false'; else echo 'true'; fi)" >> $GITHUB_OUTPUT 96 | - name: 'Commit and push changes' 97 | if: steps.git-status.outputs.modified == 'true' 98 | run: | 99 | git config user.name github-actions 100 | git config user.email github-actions@github.com 101 | git add . 102 | git commit --message '${{ steps.count-modules.outputs.size }} unique modules (${{ needs.setup.outputs.date }})' 103 | git push 104 | - name: 'Release ${{ needs.setup.outputs.tag }}' 105 | if: steps.git-status.outputs.modified == 'true' 106 | uses: jreleaser/release-action@v1 107 | env: 108 | JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 109 | with: 110 | version: early-access 111 | arguments: | 112 | release \ 113 | --auto-config \ 114 | --overwrite \ 115 | --tag-name=${{ needs.setup.outputs.tag }} \ 116 | --prerelease \ 117 | --project-name=com.github.sormuras.modules \ 118 | --project-version=${{ needs.setup.outputs.version }} \ 119 | --release-name="${{ needs.setup.outputs.version }} with ${{ steps.count-modules.outputs.size }} modules" \ 120 | --file .bach/workspace/logbook.md \ 121 | --file .bach/workspace/modules/com.github.sormuras.modules@${{ needs.setup.outputs.tag }}.jar \ 122 | --file com.github.sormuras.modules/com/github/sormuras/modules/modules.properties 123 | - name: 'Upload artifact ${{ github.event.repository.name }}-build-${{ needs.setup.outputs.version }}' 124 | if: always() 125 | uses: actions/upload-artifact@v4 126 | with: 127 | name: ${{ github.event.repository.name }}-build-${{ needs.setup.outputs.version }} 128 | path: | 129 | .bach/workspace/logbook.md 130 | .bach/workspace/modules 131 | com.github.sormuras.modules/com/github/sormuras/modules/modules.properties 132 | out/composable-modules.txt 133 | out/total-requires.txt 134 | out/unknown-requires.txt 135 | out/jreleaser/trace.log 136 | out/*.properties 137 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | release: 5 | types: [ released ] 6 | 7 | jobs: 8 | 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: 'Check out repository' 13 | uses: actions/checkout@v4 14 | - name: 'Set up Java' 15 | uses: actions/setup-java@v1 16 | with: 17 | distribution: 'oracle' 18 | java-version: 21 19 | - name: 'Count modules' 20 | id: count-modules 21 | run: echo "size=$(wc --lines < com.github.sormuras.modules/com/github/sormuras/modules/modules.properties)" >> $GITHUB_OUTPUT 22 | - name: 'Build with Bach' 23 | run: | 24 | PATH=.bach/bin:$PATH 25 | bach --project-version ${{ github.event.release.tag_name }} build 26 | - name: 'Release ${{ github.event.release.tag_name }} with ${{ steps.count-modules.outputs.size }} modules' 27 | uses: jreleaser/release-action@v1 28 | env: 29 | JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 30 | with: 31 | version: early-access 32 | arguments: | 33 | release \ 34 | --auto-config \ 35 | --update \ 36 | --tag-name=${{ github.event.release.tag_name }} \ 37 | --project-name=com.github.sormuras.modules \ 38 | --project-version=${{ github.event.release.tag_name }} \ 39 | --project-version-pattern=java-module \ 40 | --release-name="${{ github.event.release.tag_name }} with ${{ steps.count-modules.outputs.size }} modules" \ 41 | --glob ".bach/workspace/modules/*.jar" \ 42 | --file com.github.sormuras.modules/com/github/sormuras/modules/modules.properties 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .bach/workspace/ 2 | .idea/ 3 | bucket/ 4 | out/ 5 | 6 | *.iml 7 | *.jar 8 | doc/maven/resolved.txt 9 | modules.md 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Christian Stein 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sormuras/modules 2 | 3 | The main goal of this project is to collect [Unique Java Modules](#unique-java-modules). 4 | As a side product, it also assembles an overview of "almost all" Java modules published at Maven Central since August 2018. 5 | 6 | > You're welcome to extend [The Watch](#watchlist), because _modules are coming_... and soon the rhyme goes "Modules, Modules, every where!" 7 | 8 | 9 | ## Unique Java Modules 10 | 11 | Here's the daily updated 🦄 [modules.properties](com.github.sormuras.modules/com/github/sormuras/modules/modules.properties) file of unique modules. 12 | 13 | This project considers a Java module to be **unique**: 14 | 15 | - if it is an explicit module with a compiled module descriptor, 16 | - and if its module name that starts with its Maven Group ID or a well-known alias. 17 | 18 | Well-known aliases are defined as: 19 | 20 | ```java 21 | static String computeMavenGroupAlias(String group) { 22 | return switch (group) { 23 | case "com.fasterxml.jackson.core" -> "com.fasterxml.jackson"; 24 | case "com.github.almasb" -> "com.almasb"; 25 | case "javax.json" -> "java.json"; 26 | case "net.colesico.framework" -> "colesico.framework"; 27 | case "org.jetbrains.kotlin" -> "kotlin"; 28 | case "org.jfxtras" -> "jfxtras"; 29 | case "org.openjfx" -> "javafx"; 30 | case "org.ow2.asm" -> "org.objectweb.asm"; 31 | case "org.projectlombok" -> "lombok"; 32 | case "org.swimos" -> "swim"; 33 | default -> group.replace("-", ""); 34 | }; 35 | } 36 | ``` 37 | 38 | Find module `com.github.sormuras.modules` also attached as an executable JAR and [ToolProvider](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/spi/ToolProvider.html) in the assets of [releases/tag/0-ea](https://github.com/sormuras/modules/releases/tag/0-ea). 39 | Stable versions of it are published to [releases](https://github.com/sormuras/modules/releases); with [releases/latest](https://github.com/sormuras/modules/releases/latest) pointing to the latest stable release. 40 | 41 | 42 | ## More Modules found at Maven Central 43 | 44 | This [doc](doc) directory hosts lists of Maven `Group:Artifact` coordinates in text files. 45 | They are taken as an input of the scan process. 46 | The [scanner](.bach/build/build/Scanner.java) generates overview tables showing the state of modularization for each `Group:Artifact` coordinate. 47 | All JAR files published to Maven Central that were analyzed and recorded by the [modulescanner](https://github.com/sandermak/modulescanner) are evaluated using their latest version. 48 | That modulescanner was activated in mid of August 2018 - meaning earlier publications can not be evaluated here. 49 | 50 | You'll find the following summary at the start of each overview. 51 | 52 | - 🧩 denotes a Java module that contains a compiled module descriptor. 53 | It therefore provides a stable module name and an explicit modular API using `exports`, `provides`, `opens` and other directives. 54 | 55 | - ⬜ denotes an automatic Java module, with its stable module name derived from `Automatic-Module-Name` manifest entry. 56 | Its API is derived from JAR content and therefore may **not** be stable. 57 | 58 | - ⚪ denotes an automatic Java module, with its **not** stable module name derived from the JAR filename. 59 | Its API is derived from JAR content and therefore may **not** be stable. 60 | 61 | - ➖ denotes an unrelated artifact, like BOM, POM, and other non-JAR packaging types. 62 | It also denotes old JAR files, as the scan process can only evaluate artifacts that were deployed after mid August 2018. 63 | 64 | ``` 2024 65 | 2019 2020 2021 2022 2023 66 | 🧩 143 163 165 170 171 // Java modules (module descriptor with stable name and API) 67 | ⬜ 205 262 278 310 312 // Automatic Java modules (name derived from JAR manifest) 68 | ``` 69 | 70 | ### 2025 71 | ``` 72 | 2019 2020 2021 2022 2023 73 | 🧩 155 183 188 196 199 // Java modules (module descriptor with stable name and API) 74 | ⬜ 201 255 270 294 295 // Automatic Java modules (name derived from JAR manifest) 75 | ``` 76 | 77 | 78 | ### Top1000-2023 79 | 80 | 📜 [Top1000-2023.txt.md](doc/Top1000-2023.txt.md) 81 | 82 | [Top1000-2023.txt](doc/Top1000-2023.txt) contains 1,000 Maven `Group:Artifact` lines sorted by download popularity of year 2023. 83 | 84 | ### Top1000-2022 85 | 86 | 📜 [Top1000-2022.txt.md](doc/Top1000-2022.txt.md) 87 | 88 | [Top1000-2022.txt](doc/Top1000-2022.txt) contains 1,000 Maven `Group:Artifact` lines sorted by download popularity as of September 2022. 89 | 90 | ### Top1000-2021 91 | 92 | 📜 [Top1000-2021.txt.md](doc/Top1000-2021.txt.md) 93 | 94 | [Top1000-2021.txt](doc/Top1000-2021.txt) contains 1,000 Maven `Group:Artifact` lines sorted by download popularity of year 2021. 95 | 96 | ### Top1000-2020 97 | 98 | 📜 [Top1000-2020.txt.md](doc/Top1000-2020.txt.md) 99 | 100 | [Top1000-2020.txt](doc/Top1000-2020.txt) contains 1,000 Maven `Group:Artifact` lines sorted by download popularity of year 2020. 101 | 102 | ### Top1000-2019 103 | 104 | 📜 [Top1000-2019.txt.md](doc/Top1000-2019.txt.md) 105 | 106 | [Top1000-2019.txt](doc/Top1000-2019.txt) contains 1,000 Maven `Group:Artifact` lines sorted by download popularity of year 2019. 107 | 108 | 109 | ## Suspicious Artifacts 110 | 111 | Find lists of suspicious Maven artifacts in the [doc/suspicious](doc/suspicious) directory. 112 | 113 | For example, a Maven artifact is considered to be suspicious if its JAR file contains an illegal `Automatic-Module-Name` manifest entry. 114 | Illegal? An empty name, a name that contains `-` characters, a name starting numbers, a name that contains Java keywords, etc., is illegal. 115 | Consult chapter [Module Declarations](https://docs.oracle.com/javase/specs/jls/se9/html/jls-7.html#jls-7.7) of the Java Language Specification for details. 116 | TLDR; the name must be usable in `requires NAME;` directives of other modules. 117 | 118 | Another example is a Maven artifact that contains one or more `module-info.class` files from one or more other Maven artifacts that are already packaged as Java modules. 119 | Usually, this is an unwanted side-effect of shad(ow)ing 3rd-party libraries. 120 | -------------------------------------------------------------------------------- /com.github.sormuras.modules/com/github/sormuras/modules/Main.java: -------------------------------------------------------------------------------- 1 | package com.github.sormuras.modules; 2 | 3 | class Main { 4 | 5 | public static void main(String... args) { 6 | var out = new java.io.PrintWriter(System.out, true); 7 | var err = new java.io.PrintWriter(System.err, true); 8 | System.exit(new ModuleLookupToolProvider().run(out, err, args)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /com.github.sormuras.modules/com/github/sormuras/modules/ModuleLookupToolProvider.java: -------------------------------------------------------------------------------- 1 | package com.github.sormuras.modules; 2 | 3 | import java.io.PrintWriter; 4 | import java.util.Properties; 5 | import java.util.spi.ToolProvider; 6 | 7 | public class ModuleLookupToolProvider implements ToolProvider { 8 | 9 | private final Properties properties; 10 | 11 | public ModuleLookupToolProvider() { 12 | this.properties = loadProperties(); 13 | } 14 | 15 | protected Properties loadProperties() { 16 | var name = "/com/github/sormuras/modules/modules.properties"; 17 | try (var stream = getClass().getResourceAsStream(name)) { 18 | var properties = new Properties(); 19 | properties.load(stream); 20 | return properties; 21 | } catch (Exception exception) { 22 | throw new Error(exception); 23 | } 24 | } 25 | 26 | @Override 27 | public String name() { 28 | return getClass().getName(); 29 | } 30 | 31 | @Override 32 | public int run(PrintWriter out, PrintWriter err, String... args) { 33 | if (args.length == 0) { 34 | properties.stringPropertyNames().stream() 35 | .sorted() 36 | .forEach(module -> out.printf("%s=%s%n", module, properties.getProperty(module))); 37 | out.printf("%n# %d module%s%n", properties.size(), properties.size() == 1 ? "" : "s"); 38 | return 0; 39 | } 40 | if (args.length == 1) { 41 | var uri = properties.getProperty(args[0]); 42 | if (uri != null) { 43 | out.println(uri); 44 | return 0; 45 | } 46 | return 1; 47 | } 48 | err.printf("Usage: %s [MODULE]%n", name()); 49 | return 2; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /com.github.sormuras.modules/module-info.java: -------------------------------------------------------------------------------- 1 | module com.github.sormuras.modules { 2 | provides java.util.spi.ToolProvider with com.github.sormuras.modules.ModuleLookupToolProvider; 3 | } 4 | -------------------------------------------------------------------------------- /doc/README.md: -------------------------------------------------------------------------------- 1 | # Lists of Maven Coordinates 2 | 3 | This directory hosts lists of Maven `Group:Artifact` coordinates in text files. 4 | -------------------------------------------------------------------------------- /doc/Top1000-2019.txt: -------------------------------------------------------------------------------- 1 | org.codehaus.plexus:plexus-utils 2 | org.codehaus.plexus:plexus 3 | org.slf4j:slf4j-parent 4 | org.apache:apache 5 | org.sonatype.forge:forge-parent 6 | org.sonatype.oss:oss-parent 7 | org.sonatype.spice:spice-parent 8 | org.slf4j:slf4j-api 9 | org.apache.maven:maven-model 10 | org.codehaus.plexus:plexus-interpolation 11 | org.apache.maven:maven-artifact 12 | com.fasterxml.jackson:jackson-parent 13 | org.apache.maven:maven-plugin-api 14 | junit:junit 15 | org.apache.maven:maven-repository-metadata 16 | com.google.guava:guava-parent 17 | org.apache.maven:maven-settings 18 | commons-codec:commons-codec 19 | org.apache.maven:maven-core 20 | net.java:jvnet-parent 21 | org.apache.httpcomponents:httpcomponents-client 22 | org.apache.maven:maven 23 | com.google.guava:guava 24 | commons-io:commons-io 25 | org.apache.maven.shared:maven-shared-utils 26 | org.apache.httpcomponents:httpcomponents-core 27 | org.ow2.asm:asm 28 | org.apache.commons:commons-lang3 29 | commons-logging:commons-logging 30 | com.fasterxml.jackson.core:jackson-core 31 | com.fasterxml.jackson:jackson-bom 32 | org.apache.httpcomponents:httpclient 33 | org.apache.maven:maven-project 34 | org.apache.maven:maven-profile 35 | org.apache.maven:maven-artifact-manager 36 | org.apache.httpcomponents:httpcore 37 | com.fasterxml.jackson.core:jackson-databind 38 | org.apache.maven.reporting:maven-reporting-api 39 | com.google.code.findbugs:jsr305 40 | org.apache.maven:maven-plugin-registry 41 | com.fasterxml.jackson.core:jackson-annotations 42 | org.codehaus.plexus:plexus-container-default 43 | org.codehaus.plexus:plexus-archiver 44 | org.codehaus.plexus:plexus-io 45 | org.codehaus.plexus:plexus-component-annotations 46 | org.apache.maven:maven-parent 47 | org.apache.maven.doxia:doxia-sink-api 48 | org.apache.maven:maven-plugin-descriptor 49 | commons-lang:commons-lang 50 | org.springframework:spring-core 51 | org.apache.maven:maven-error-diagnostics 52 | org.apache.maven:maven-plugin-parameter-documenter 53 | org.apache.maven:maven-monitor 54 | org.codehaus.plexus:plexus-classworlds 55 | org.codehaus.plexus:plexus-containers 56 | org.springframework:spring-beans 57 | org.apache.commons:commons-compress 58 | classworlds:classworlds 59 | com.fasterxml.jackson:jackson-base 60 | org.ow2:ow2 61 | org.apache.httpcomponents:project 62 | org.springframework:spring-context 63 | org.springframework:spring-framework-bom 64 | org.springframework:spring-aop 65 | commons-cli:commons-cli 66 | org.apache.maven.wagon:wagon-provider-api 67 | joda-time:joda-time 68 | com.google:google 69 | commons-collections:commons-collections 70 | org.yaml:snakeyaml 71 | org.slf4j:jcl-over-slf4j 72 | org.springframework:spring-expression 73 | org.apache.maven:maven-archiver 74 | org.apache.maven:maven-toolchain 75 | org.apache.maven.reporting:maven-reporting 76 | org.hamcrest:hamcrest-parent 77 | com.google.errorprone:error_prone_parent 78 | org.apache.maven.plugins:maven-compiler-plugin 79 | org.springframework:spring-web 80 | org.hamcrest:hamcrest-core 81 | com.amazonaws:aws-java-sdk-pom 82 | org.springframework.boot:spring-boot-dependencies 83 | mysql:mysql-connector-java 84 | com.google.code.gson:gson 85 | org.apache.maven.plugins:maven-surefire-plugin 86 | commons-beanutils:commons-beanutils 87 | org.apache.maven.shared:maven-filtering 88 | org.apache.maven:maven-model-builder 89 | org.apache.maven.shared:maven-common-artifact-filters 90 | org.apache.httpcomponents:httpcomponents-parent 91 | org.springframework.data.build:spring-data-build 92 | org.apache.maven:maven-settings-builder 93 | com.google.errorprone:error_prone_annotations 94 | org.apache.maven:maven-aether-provider 95 | log4j:log4j 96 | org.sonatype.plexus:plexus-build-api 97 | org.codehaus.plexus:plexus-compiler-api 98 | org.springframework.data:spring-data-releasetrain 99 | org.apache.maven.plugins:maven-resources-plugin 100 | org.codehaus.plexus:plexus-compilers 101 | org.sonatype.plexus:plexus-sec-dispatcher 102 | org.springframework.integration:spring-integration-bom 103 | org.codehaus.plexus:plexus-compiler-javac 104 | org.codehaus.plexus:plexus-compiler-manager 105 | org.sonatype.sisu:sisu-guice 106 | io.projectreactor:reactor-bom 107 | org.apache.maven.surefire:surefire-api 108 | org.apache.maven.surefire:surefire-booter 109 | net.bytebuddy:byte-buddy-parent 110 | org.springframework:spring-webmvc 111 | ch.qos.logback:logback-core 112 | ch.qos.logback:logback-classic 113 | net.bytebuddy:byte-buddy 114 | com.google.protobuf:protobuf-java 115 | org.apache.maven.surefire:maven-surefire-common 116 | org.objenesis:objenesis-parent 117 | org.apache.maven.plugin-tools:maven-plugin-annotations 118 | org.objenesis:objenesis 119 | org.sonatype.plexus:plexus-cipher 120 | ch.qos.logback:logback-parent 121 | org.codehaus:codehaus-parent 122 | org.codehaus.plexus:plexus-interactivity-api 123 | org.junit:junit-bom 124 | com.google.code.gson:gson-parent 125 | org.codehaus.mojo:animal-sniffer-annotations 126 | org.ow2.asm:asm-tree 127 | com.thoughtworks.qdox:qdox 128 | org.apache.logging.log4j:log4j-api 129 | org.apache.maven.doxia:doxia-logging-api 130 | org.springframework.boot:spring-boot-starter 131 | org.apache.maven.plugins:maven-jar-plugin 132 | aopalliance:aopalliance 133 | io.netty:netty-parent 134 | xml-apis:xml-apis 135 | org.ow2.asm:asm-analysis 136 | org.tukaani:xz 137 | org.sonatype.sisu:sisu-parent 138 | org.sonatype.sisu:sisu-inject 139 | org.javassist:javassist 140 | org.sonatype.sisu.inject:guice-bean 141 | org.sonatype.sisu.inject:guice-plexus 142 | io.netty:netty-bom 143 | com.google.j2objc:j2objc-annotations 144 | org.sonatype.sisu:sisu-inject-bean 145 | org.slf4j:jul-to-slf4j 146 | commons-digester:commons-digester 147 | org.ow2.asm:asm-commons 148 | javax.xml.bind:jaxb-api 149 | org.mockito:mockito-core 150 | javax.inject:javax.inject 151 | com.google.protobuf:protobuf-parent 152 | org.springframework.boot:spring-boot 153 | org.apache.maven.plugins:maven-clean-plugin 154 | org.apache.maven.doxia:doxia-core 155 | org.springframework.boot:spring-boot-autoconfigure 156 | org.sonatype.sisu:sisu-inject-plexus 157 | com.squareup.okio:okio-parent 158 | org.apache.maven.shared:maven-shared-incremental 159 | org.jboss.shrinkwrap.resolver:shrinkwrap-resolver-bom 160 | org.jboss.shrinkwrap.descriptors:shrinkwrap-descriptors-bom 161 | org.apache.maven.doxia:doxia-decoration-model 162 | org.jboss.arquillian:arquillian-bom 163 | org.jboss.logging:jboss-logging 164 | org.apache.maven.doxia:doxia-site-renderer 165 | org.jboss.shrinkwrap:shrinkwrap-bom 166 | org.apache.maven.doxia:doxia-module-xhtml 167 | org.apache.velocity:velocity 168 | com.fasterxml.jackson.datatype:jackson-datatype-jsr310 169 | org.springframework.boot:spring-boot-parent 170 | org.sonatype.aether:aether-util 171 | org.eclipse.jetty:jetty-bom 172 | javax.validation:validation-api 173 | org.sonatype.aether:aether-api 174 | org.eclipse.aether:aether-util 175 | commons-validator:commons-validator 176 | org.apache.logging.log4j:log4j-bom 177 | com.squareup.okhttp3:parent 178 | com.fasterxml:classmate 179 | org.apache.maven.shared:maven-dependency-tree 180 | net.bytebuddy:byte-buddy-agent 181 | org.apache.maven.shared:maven-shared-components 182 | backport-util-concurrent:backport-util-concurrent 183 | org.apache.maven.doxia:doxia-module-fml 184 | org.springframework:spring-tx 185 | io.netty:netty-buffer 186 | io.netty:netty-common 187 | org.apache.maven.doxia:doxia 188 | javax.annotation:javax.annotation-api 189 | org.slf4j:slf4j-jdk14 190 | com.fasterxml.jackson.module:jackson-modules-java8 191 | org.sonatype.aether:aether-spi 192 | org.sonatype.aether:aether-impl 193 | org.codehaus.plexus:plexus-java 194 | io.netty:netty-transport 195 | org.codehaus.plexus:plexus-velocity 196 | com.beust:jcommander 197 | xerces:xercesImpl 198 | org.springframework.boot:spring-boot-starters 199 | com.squareup.okio:okio 200 | org.codehaus.plexus:plexus-components 201 | org.scala-lang:scala-library 202 | com.fasterxml.jackson.datatype:jackson-datatype-jdk8 203 | org.apache.maven.shared:file-management 204 | io.netty:netty-codec 205 | org.codehaus.plexus:plexus-compiler 206 | org.bouncycastle:bcprov-jdk15on 207 | io.netty:netty-handler 208 | antlr:antlr 209 | org.apache.maven.plugins:maven-install-plugin 210 | org.apache.maven.shared:maven-shared-io 211 | org.springframework:spring-test 212 | org.assertj:assertj-core 213 | org.springframework:spring-jcl 214 | org.ow2.asm:asm-util 215 | org.checkerframework:checker-qual 216 | com.google.inject:guice 217 | org.codehaus.plexus:plexus-languages 218 | org.reactivestreams:reactive-streams 219 | org.springframework.boot:spring-boot-starter-logging 220 | com.amazonaws:aws-java-sdk-core 221 | javax.activation:activation 222 | net.minidev:json-smart 223 | org.apache.maven.reporting:maven-reporting-impl 224 | com.fasterxml.jackson.dataformat:jackson-dataformat-cbor 225 | org.eclipse.sisu:sisu-plexus 226 | org.eclipse.sisu:sisu-inject 227 | org.assertj:assertj-parent-pom 228 | org.apache.tomcat.embed:tomcat-embed-core 229 | org.eclipse.sisu:org.eclipse.sisu.inject 230 | com.squareup.okhttp3:okhttp 231 | org.eclipse.sisu:org.eclipse.sisu.plexus 232 | org.scala-lang:scala-reflect 233 | com.sun.activation:all 234 | org.springframework.boot:spring-boot-starter-web 235 | org.springframework.boot:spring-boot-test 236 | io.netty:netty-resolver 237 | org.apache.tomcat.embed:tomcat-embed-el 238 | org.apache.ant:ant-parent 239 | com.jcraft:jsch 240 | org.codehaus.plexus:plexus-i18n 241 | org.junit.platform:junit-platform-commons 242 | org.springframework.cloud:spring-cloud-dependencies-parent 243 | org.apache.tomcat.embed:tomcat-embed-websocket 244 | org.springframework.boot:spring-boot-tools 245 | org.springframework:spring-jdbc 246 | org.eclipse.jetty:jetty-parent 247 | asm:asm-parent 248 | org.springframework.boot:spring-boot-starter-parent 249 | com.fasterxml.jackson.module:jackson-module-parameter-names 250 | io.netty:netty-codec-http 251 | org.apiguardian:apiguardian-api 252 | javax.servlet:javax.servlet-api 253 | oro:oro 254 | org.apache.httpcomponents:httpmime 255 | org.springframework.boot:spring-boot-test-autoconfigure 256 | org.aspectj:aspectjweaver 257 | javax.servlet:servlet-api 258 | net.minidev:minidev-parent 259 | net.minidev:accessors-smart 260 | org.apache.xbean:xbean-reflect 261 | org.springframework.boot:spring-boot-starter-tomcat 262 | org.eclipse.jetty:jetty-project 263 | org.junit.platform:junit-platform-engine 264 | org.hibernate.validator:hibernate-validator 265 | com.amazonaws:jmespath-java 266 | org.apache.logging.log4j:log4j-core 267 | org.apache.ant:ant 268 | org.xerial.snappy:snappy-java 269 | org.apache.maven:maven-compat 270 | org.springframework.boot:spring-boot-starter-test 271 | org.hamcrest:hamcrest-library 272 | com.sun.mail:all 273 | org.bouncycastle:bcpkix-jdk15on 274 | org.jboss.weld:weld-parent 275 | org.opentest4j:opentest4j 276 | org.eclipse.jetty:jetty-util 277 | org.apache.logging.log4j:log4j 278 | org.eclipse.ee4j:project 279 | com.jayway.jsonpath:json-path 280 | javax.xml.bind:jaxb-api-parent 281 | org.apache.ant:ant-launcher 282 | org.eclipse.jetty:jetty-io 283 | org.apache.maven.surefire:surefire-logger-api 284 | org.apache.maven.wagon:wagon 285 | net.java.dev.jna:jna 286 | org.junit.jupiter:junit-jupiter-api 287 | org.springframework.boot:spring-boot-starter-json 288 | org.hibernate.validator:hibernate-validator-parent 289 | org.apache.maven:apache-maven 290 | org.apache.maven.shared:maven-artifact-transfer 291 | commons-httpclient:commons-httpclient 292 | org.codehaus.jackson:jackson-core-asl 293 | jline:jline 294 | org.apache.logging.log4j:log4j-to-slf4j 295 | org.springframework.boot:spring-boot-loader-tools 296 | com.google.collections:google-collections 297 | org.glassfish.jersey:jersey-bom 298 | org.testng:testng 299 | org.eclipse.jetty:jetty-http 300 | org.jboss.weld:weld-api-bom 301 | commons-logging:commons-logging-api 302 | javax.enterprise:cdi-api 303 | org.json:json 304 | com.typesafe:config 305 | org.apache.maven.plugins:maven-site-plugin 306 | com.thoughtworks.xstream:xstream-parent 307 | org.jboss.weld:weld-api-parent 308 | org.iq80.snappy:snappy 309 | com.google.http-client:google-http-client-parent 310 | org.codehaus.jackson:jackson-mapper-asl 311 | javax.annotation:jsr250-api 312 | org.skyscreamer:jsonassert 313 | com.thoughtworks.xstream:xstream 314 | org.apache.commons:commons-exec 315 | com.sun.xml.bind.mvn:jaxb-parent 316 | org.glassfish.jaxb:jaxb-bom 317 | com.sun.xml.bind:jaxb-bom-ext 318 | org.postgresql:postgresql 319 | org.scala-lang:scala-compiler 320 | dom4j:dom4j 321 | com.fasterxml.jackson.module:jackson-module-jaxb-annotations 322 | org.apache.maven.plugins:maven-deploy-plugin 323 | org.projectlombok:lombok 324 | software.amazon.ion:ion-java 325 | org.springframework.data:spring-data-commons 326 | org.apache.commons:commons-collections4 327 | org.xmlunit:xmlunit-core 328 | org.apache.maven.plugins:maven-assembly-plugin 329 | com.zaxxer:HikariCP 330 | asm:asm 331 | org.eclipse.aether:aether-api 332 | org.codehaus.groovy:groovy 333 | org.junit.jupiter:junit-jupiter-engine 334 | com.amazonaws:aws-java-sdk-s3 335 | org.hibernate:hibernate-core 336 | org.apache.maven.plugins:maven-dependency-plugin 337 | org.slf4j:slf4j-log4j12 338 | com.amazonaws:aws-java-sdk-kms 339 | org.springframework.boot:spring-boot-maven-plugin 340 | com.google.guava:failureaccess 341 | org.springframework.data.build:spring-data-parent 342 | net.sf.jopt-simple:jopt-simple 343 | org.jsoup:jsoup 344 | io.netty:netty 345 | org.hdrhistogram:HdrHistogram 346 | org.springframework:spring-orm 347 | com.github.jnr:jffi 348 | org.eclipse.aether:aether-spi 349 | org.eclipse.aether:aether-impl 350 | org.xmlunit:xmlunit-parent 351 | org.apache.maven.surefire:surefire-providers 352 | com.vaadin.external.google:android-json 353 | org.eclipse.jetty:jetty-server 354 | org.springframework.boot:spring-boot-starter-jdbc 355 | io.swagger:swagger-annotations 356 | org.apache.maven.plugins:maven-shade-plugin 357 | com.thoughtworks.paranamer:paranamer-parent 358 | com.google.guava:listenablefuture 359 | com.fasterxml.jackson.module:jackson-modules-base 360 | javax.activation:javax.activation-api 361 | org.jacoco:org.jacoco.build 362 | org.apache.kafka:kafka-clients 363 | org.springframework.boot:spring-boot-starter-aop 364 | org.antlr:antlr4-master 365 | io.swagger:swagger-project 366 | com.sun.jersey:jersey-project 367 | com.fasterxml.jackson.dataformat:jackson-dataformat-yaml 368 | org.antlr:antlr4-runtime 369 | commons-configuration:commons-configuration 370 | org.vafer:jdependency 371 | org.scala-lang.modules:scala-xml_2.12 372 | com.thoughtworks.paranamer:paranamer 373 | org.springframework.security:spring-security-core 374 | javax.ws.rs:javax.ws.rs-api 375 | org.jdom:jdom2 376 | org.springframework:spring-context-support 377 | org.apache.maven.plugins:maven-antrun-plugin 378 | org.jboss:jandex 379 | org.apache.commons:commons-math3 380 | org.hibernate.common:hibernate-commons-annotations 381 | xpp3:xpp3_min 382 | org.jetbrains.kotlin:kotlin-stdlib 383 | org.mortbay.jetty:jetty-parent 384 | org.fusesource:fusesource-pom 385 | io.dropwizard.metrics:metrics-parent 386 | io.netty:netty-codec-http2 387 | com.sun.xml.bind:jaxb-impl 388 | org.jacoco:org.jacoco.agent 389 | org.springframework:spring-aspects 390 | io.netty:netty-transport-native-epoll 391 | org.apache.zookeeper:zookeeper 392 | org.apache.maven.surefire:surefire-junit4 393 | org.postgresql:pgjdbc-core-parent 394 | org.postgresql:pgjdbc-versions 395 | org.springframework.boot:spring-boot-actuator 396 | org.sonatype.sisu.inject:guice-parent 397 | io.dropwizard.metrics:metrics-core 398 | net.minidev:parent 399 | org.eclipse.jetty:jetty-security 400 | com.fasterxml.jackson.dataformat:jackson-dataformats-binary 401 | org.eclipse.jetty:jetty-servlet 402 | org.apache.maven.doxia:doxia-module-xdoc 403 | org.apache.maven.doxia:doxia-module-apt 404 | org.springframework.security:spring-security-web 405 | org.apache.maven:maven-builder-support 406 | com.sun.jersey:jersey-core 407 | org.springframework.boot:spring-boot-starter-actuator 408 | io.swagger:swagger-models 409 | com.google.protobuf:protobuf-bom 410 | org.apache.logging.log4j:log4j-slf4j-impl 411 | net.java.dev.jna:jna-platform 412 | org.springframework.data:spring-data-jpa 413 | com.google.inject:guice-parent 414 | org.codehaus.woodstox:stax2-api 415 | org.jetbrains.kotlin:kotlin-stdlib-common 416 | org.springframework.security:spring-security-bom 417 | xmlpull:xmlpull 418 | org.checkerframework:checker-compat-qual 419 | com.googlecode.json-simple:json-simple 420 | org.glassfish.jersey:project 421 | io.micrometer:micrometer-core 422 | org.apache.commons:commons-text 423 | org.jvnet.staxex:stax-ex 424 | org.springframework.security:spring-security-config 425 | org.glassfish.jersey.core:jersey-common 426 | org.apache.avro:avro-parent 427 | org.apache.avro:avro-toplevel 428 | io.netty:netty-transport-native-unix-common 429 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-providers 430 | org.codehaus.groovy:groovy-xml 431 | org.glassfish.hk2:hk2-parent 432 | com.google.http-client:google-http-client 433 | com.sun.xml.fastinfoset:FastInfoset 434 | org.apache.maven.shared:maven-invoker 435 | com.sun.istack:istack-commons-runtime 436 | org.glassfish.hk2:external 437 | commons-chain:commons-chain 438 | io.netty:netty-codec-socks 439 | commons-net:commons-net 440 | org.jacoco:org.jacoco.core 441 | com.h2database:h2 442 | com.google.api-client:google-api-client-parent 443 | org.junit.jupiter:junit-jupiter-params 444 | org.glassfish.hk2:hk2-bom 445 | org.glassfish.jaxb:txw2 446 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider 447 | org.glassfish.hk2:hk2-api 448 | com.google.oauth-client:google-oauth-client-parent 449 | org.scala-lang.modules:scala-parser-combinators_2.12 450 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-base 451 | com.google.protobuf:protobuf-java-util 452 | org.glassfish.hk2:hk2-locator 453 | com.sun.istack:istack-commons 454 | com.sun.xml.fastinfoset:fastinfoset-project 455 | io.grpc:grpc-context 456 | org.springframework.boot:spring-boot-starter-data-jpa 457 | io.netty:netty-handler-proxy 458 | org.glassfish.jersey.core:jersey-client 459 | org.glassfish.hk2:hk2-utils 460 | org.apache.avro:avro 461 | com.google.http-client:google-http-client-jackson2 462 | org.jacoco:org.jacoco.report 463 | org.apache.maven.wagon:wagon-providers 464 | com.fasterxml.jackson.dataformat:jackson-dataformats-text 465 | com.github.ben-manes.caffeine:caffeine 466 | org.slf4j:log4j-over-slf4j 467 | org.glassfish.jaxb:jaxb-runtime 468 | com.google.cloud:google-cloud-bom 469 | org.eclipse.jetty:jetty-xml 470 | org.apache.struts:struts-parent 471 | org.apache.struts:struts-master 472 | org.apache.velocity:velocity-tools 473 | org.apache.struts:struts-core 474 | sslext:sslext 475 | org.codehaus.plexus:plexus-digest 476 | org.apache.struts:struts-taglib 477 | com.sun.xml.bind.mvn:jaxb-txw-parent 478 | org.apache.struts:struts-tiles 479 | org.antlr:antlr-master 480 | com.amazonaws:aws-java-sdk-bom 481 | org.beanshell:beanshell 482 | org.jetbrains:annotations 483 | org.seleniumhq.selenium:selenium-remote-driver 484 | org.apache.commons:commons-pool2 485 | org.codehaus.groovy:groovy-json 486 | org.springframework.boot:spring-boot-actuator-autoconfigure 487 | org.seleniumhq.selenium:selenium-api 488 | org.apache.maven.shared:maven-dependency-analyzer 489 | org.reflections:reflections 490 | org.junit.platform:junit-platform-launcher 491 | io.opencensus:opencensus-api 492 | org.glassfish.hk2.external:aopalliance-repackaged 493 | org.antlr:antlr-runtime 494 | org.beanshell:bsh 495 | org.slf4j:slf4j-simple 496 | org.jetbrains.kotlin:kotlin-reflect 497 | org.apache.geronimo.genesis:genesis-default-flava 498 | org.glassfish.hk2:osgi-resource-locator 499 | javax.xml.stream:stax-api 500 | org.latencyutils:LatencyUtils 501 | com.sun.jersey:jersey-client 502 | org.mortbay.jetty:project 503 | com.sun.xml.bind.mvn:jaxb-runtime-parent 504 | org.glassfish.hk2.external:javax.inject 505 | org.mozilla:rhino 506 | com.lmax:disruptor 507 | org.apache.lucene:lucene-solr-grandparent 508 | org.glassfish.jersey.media:project 509 | org.apache.maven.surefire:common-java5 510 | org.dom4j:dom4j 511 | org.jboss:jboss-parent 512 | org.lz4:lz4-java 513 | org.apache.poi:poi 514 | com.google.auth:google-auth-library-parent 515 | org.springframework.plugin:spring-plugin-core 516 | org.mortbay.jetty:jetty-util 517 | org.springframework.boot:spring-boot-starter-validation 518 | org.jacoco:jacoco-maven-plugin 519 | io.springfox:springfox-spi 520 | org.codehaus.plexus:plexus-interactivity 521 | com.sun.mail:javax.mail 522 | org.jetbrains.kotlin:kotlin-bom 523 | com.google.api:gax-bom 524 | org.codehaus.jettison:jettison 525 | com.sun.jersey.contribs:jersey-contribs 526 | jakarta.activation:jakarta.activation-api 527 | org.eclipse.jgit:org.eclipse.jgit-parent 528 | org.springframework:spring-messaging 529 | org.springframework.cloud:spring-cloud-contract-dependencies 530 | commons-fileupload:commons-fileupload 531 | org.eclipse.jgit:org.eclipse.jgit 532 | org.springframework.cloud:spring-cloud-commons-dependencies 533 | com.sun.xml.bind.mvn:jaxb-bundles 534 | javax.mail:mail 535 | org.ccil.cowan.tagsoup:tagsoup 536 | org.apache.lucene:lucene-parent 537 | jakarta.xml.bind:jakarta.xml.bind-api 538 | io.netty:netty-all 539 | org.seleniumhq.selenium:selenium-support 540 | org.hibernate:hibernate-validator 541 | org.apache.maven.plugins:maven-war-plugin 542 | io.airlift:airbase 543 | org.apache.commons:commons-csv 544 | org.glassfish:pom 545 | org.apache.lucene:lucene-core 546 | net.jcip:jcip-annotations 547 | org.scala-lang.modules:scala-xml_2.11 548 | xalan:xalan 549 | org.apache.geronimo.genesis:genesis 550 | jakarta.annotation:jakarta.annotation-api 551 | org.hibernate:hibernate-validator-parent 552 | com.google.api.grpc:proto-google-common-protos 553 | org.apache.felix:maven-bundle-plugin 554 | stax:stax-api 555 | org.hamcrest:hamcrest 556 | org.mapstruct:mapstruct-parent 557 | org.apache.httpcomponents:httpcore-nio 558 | io.springfox:springfox-spring-web 559 | org.eclipse.jetty:jetty-webapp 560 | org.scala-lang.modules:scala-parser-combinators_2.11 561 | org.seleniumhq.selenium:selenium-firefox-driver 562 | io.projectreactor:reactor-core 563 | com.googlecode.javaewah:JavaEWAH 564 | org.springframework.boot:spring-boot-starter-security 565 | org.apache.geronimo.genesis:genesis-java5-flava 566 | io.grpc:grpc-core 567 | org.apache.httpcomponents:httpcomponents-asyncclient 568 | org.springframework.cloud:spring-cloud-netflix-dependencies 569 | org.springframework.cloud:spring-cloud-build 570 | com.typesafe:ssl-config-core_2.12 571 | org.seleniumhq.selenium:selenium-chrome-driver 572 | io.springfox:springfox-schema 573 | org.apache.poi:poi-ooxml 574 | org.scala-sbt:util-interface 575 | io.grpc:grpc-stub 576 | org.mapstruct:mapstruct 577 | io.springfox:springfox-core 578 | org.apache.maven.doxia:doxia-integration-tools 579 | org.apache.hadoop:hadoop-main 580 | org.apache.maven.plugin-tools:maven-plugin-tools 581 | org.springframework.cloud:spring-cloud-stream-dependencies 582 | org.codehaus.mojo:exec-maven-plugin 583 | com.google.oauth-client:google-oauth-client 584 | javax.transaction:javax.transaction-api 585 | org.aspectj:aspectjrt 586 | org.springframework.plugin:spring-plugin-metadata 587 | io.grpc:grpc-protobuf 588 | org.apache.curator:curator-framework 589 | io.springfox:springfox-swagger2 590 | org.mortbay.jetty:jetty 591 | com.google.api-client:google-api-client 592 | io.grpc:grpc-protobuf-lite 593 | org.seleniumhq.selenium:selenium-java 594 | org.jdom:jdom 595 | com.amazonaws:aws-java-sdk-sqs 596 | org.apache.httpcomponents:httpasyncclient 597 | org.eclipse.jetty:jetty-client 598 | io.reactivex:rxjava 599 | org.fusesource.jansi:jansi 600 | org.apache.curator:curator-client 601 | org.seleniumhq.selenium:selenium-ie-driver 602 | io.springfox:springfox-swagger-common 603 | org.springframework.plugin:spring-plugin 604 | org.springframework.cloud:spring-cloud-config-dependencies 605 | org.codehaus.jackson:jackson-jaxrs 606 | io.reactivex.rxjava2:rxjava 607 | com.github.jnr:jnr-constants 608 | org.seleniumhq.selenium:selenium-safari-driver 609 | org.apache.lucene:lucene-analyzers-common 610 | com.amazonaws:aws-java-sdk-dynamodb 611 | org.apache.xmlbeans:xmlbeans 612 | org.glassfish.jersey.core:jersey-server 613 | org.eclipse.jetty:jetty-continuation 614 | org.apache.maven.plugins:maven-source-plugin 615 | com.ibm.icu:icu4j 616 | org.springframework.cloud:spring-cloud-build-dependencies 617 | org.codehaus.jackson:jackson-xc 618 | org.apache.maven.plugins:maven-enforcer-plugin 619 | org.scala-sbt:compiler-bridge_2.12 620 | org.apache.ivy:ivy 621 | io.rest-assured:rest-assured-parent 622 | org.apache.poi:poi-ooxml-schemas 623 | com.lihaoyi:sourcecode_2.12 624 | commons-beanutils:commons-beanutils-core 625 | org.apache.maven.plugins:maven-release-plugin 626 | org.flywaydb:flyway-parent 627 | org.codehaus.groovy:groovy-all 628 | org.freemarker:freemarker 629 | com.github.jnr:jnr-posix 630 | org.mockito:mockito-junit-jupiter 631 | org.eclipse.jetty.websocket:websocket-parent 632 | jakarta.xml.bind:jakarta.xml.bind-api-parent 633 | org.apache.curator:curator-recipes 634 | org.jetbrains.kotlin:kotlin-stdlib-jdk7 635 | io.opencensus:opencensus-contrib-grpc-metrics 636 | org.apache.hadoop:hadoop-project 637 | org.glassfish.jersey.containers:jersey-container-servlet-core 638 | com.github.jnr:jnr-ffi 639 | org.junit.jupiter:junit-jupiter 640 | com.amazonaws:aws-java-sdk-sts 641 | com.fasterxml.woodstox:woodstox-core 642 | org.apache.maven.doxia:doxia-skin-model 643 | org.glassfish.jersey.bundles:project 644 | org.flywaydb:flyway-core 645 | org.seleniumhq.selenium:selenium-edge-driver 646 | org.eclipse.jetty.websocket:websocket-api 647 | org.springframework.boot:spring-boot-devtools 648 | org.spark-project.spark:unused 649 | org.glassfish.jersey.bundles.repackaged:project 650 | org.glassfish.jersey.media:jersey-media-jaxb 651 | javax.ws.rs:jsr311-api 652 | org.apache.hadoop:hadoop-common 653 | org.eclipse.jetty.websocket:websocket-common 654 | org.eclipse.jetty.websocket:websocket-client 655 | org.apache.lucene:lucene-queryparser 656 | org.apache.lucene:lucene-queries 657 | org.springframework.boot:spring-boot-gradle-plugin 658 | com.fasterxml.jackson.dataformat:jackson-dataformat-smile 659 | org.springframework.cloud:spring-cloud-sleuth-dependencies 660 | io.spring.gradle:dependency-management-plugin 661 | com.google.code.findbugs:annotations 662 | org.glassfish.jersey.containers:project 663 | net.jpountz.lz4:lz4 664 | org.glassfish.jersey.bundles.repackaged:jersey-guava 665 | org.sonatype.buildsupport:buildsupport 666 | org.sonatype.buildsupport:public-parent 667 | org.jetbrains.kotlin:kotlin-stdlib-jdk8 668 | commons-pool:commons-pool 669 | org.springframework.cloud:spring-cloud-aws-dependencies 670 | com.nimbusds:nimbus-jose-jwt 671 | io.springfox:springfox-swagger-ui 672 | org.codehaus.mojo:build-helper-maven-plugin 673 | org.springframework.security:spring-security-crypto 674 | io.rest-assured:rest-assured-common 675 | cglib:cglib-nodep 676 | jakarta.validation:jakarta.validation-api 677 | com.jcraft:jzlib 678 | org.clojure:pom.contrib 679 | org.apache.pdfbox:pdfbox-parent 680 | org.springframework.cloud:spring-cloud-consul-dependencies 681 | io.rest-assured:rest-assured 682 | org.springframework.retry:spring-retry 683 | org.springframework.cloud:spring-cloud-dependencies 684 | org.apache.hadoop:hadoop-project-dist 685 | org.apache.hadoop:hadoop-annotations 686 | com.netflix.archaius:archaius-core 687 | io.rest-assured:json-path 688 | com.github.jnr:jnr-x86asm 689 | io.rest-assured:xml-path 690 | org.apache.lucene:lucene-sandbox 691 | org.threeten:threetenbp 692 | xalan:serializer 693 | com.101tec:zkclient 694 | io.micrometer:micrometer-bom 695 | org.apache.maven.reporting:maven-reporting-exec 696 | com.typesafe.netty:netty-reactive-streams 697 | javax.persistence:javax.persistence-api 698 | org.springframework.cloud:spring-cloud-zookeeper-dependencies 699 | net.logstash.logback:logstash-logback-encoder 700 | com.amazonaws:aws-java-sdk-ec2 701 | com.carrotsearch:hppc 702 | com.google.inject.extensions:guice-assistedinject 703 | org.apache.hadoop:hadoop-auth 704 | com.squareup.okhttp:okhttp 705 | com.github.stephenc.jcip:jcip-annotations 706 | org.apache.maven.wagon:wagon-http-shared 707 | org.springframework.cloud:spring-cloud-bus-dependencies 708 | com.amazonaws:aws-java-sdk-cloudwatch 709 | io.dropwizard.metrics:metrics-jvm 710 | com.lihaoyi:fastparse_2.12 711 | com.google.auth:google-auth-library-credentials 712 | com.sun.jersey:jersey-json 713 | org.apache.maven.shared:maven-doxia-tools 714 | org.springframework.cloud:spring-cloud-cloudfoundry-dependencies 715 | com.sun.jersey:jersey-server 716 | com.carrotsearch:hppc-parent 717 | org.glassfish.jersey.ext:project 718 | org.springframework.cloud:spring-cloud-security-dependencies 719 | com.amazonaws:aws-java-sdk-kinesis 720 | com.fasterxml.jackson.datatype:jackson-datatype-joda 721 | com.amazonaws:aws-java-sdk 722 | com.squareup.okhttp3:okhttp-urlconnection 723 | com.google.inject.extensions:extensions-parent 724 | org.scala-sbt:launcher-interface 725 | jakarta.annotation:ca-parent 726 | org.springframework.cloud:spring-cloud-vault-dependencies 727 | org.apache.maven.enforcer:enforcer 728 | org.jetbrains.kotlinx:kotlinx-coroutines-bom 729 | org.seleniumhq.selenium:selenium-opera-driver 730 | org.joda:joda-convert 731 | org.springframework.cloud:spring-cloud-task-dependencies 732 | org.apache.maven.plugins:maven-failsafe-plugin 733 | org.springframework.cloud:spring-cloud-commons 734 | org.springframework.cloud:spring-cloud-gateway-dependencies 735 | org.springframework.cloud:spring-cloud-starter 736 | org.springframework.cloud:spring-cloud-openfeign-dependencies 737 | com.github.virtuald:curvesapi 738 | com.google.auto:auto-parent 739 | com.amazonaws:aws-java-sdk-sns 740 | com.squareup.okhttp:parent 741 | org.apache.maven.surefire:surefire-grouper 742 | org.springframework:spring-oxm 743 | org.glassfish.jersey.containers:jersey-container-servlet 744 | asm:asm-tree 745 | org.apache.maven.wagon:wagon-file 746 | io.rsocket:rsocket-bom 747 | org.scala-sbt:util-logging_2.12 748 | org.codehaus.woodstox:woodstox-core-asl 749 | org.codehaus.plexus:plexus-resources 750 | org.scala-sbt:util-relation_2.12 751 | org.springframework.cloud:spring-cloud-context 752 | com.google.auth:google-auth-library-oauth2-http 753 | org.scala-sbt:util-control_2.12 754 | asm:asm-commons 755 | org.scala-sbt:io_2.12 756 | org.scala-sbt:compiler-interface 757 | io.jsonwebtoken:jjwt 758 | com.googlecode.libphonenumber:libphonenumber 759 | com.googlecode.libphonenumber:libphonenumber-parent 760 | com.github.jnr:jnr-enxio 761 | com.github.jnr:jnr-unixsocket 762 | org.scala-sbt:test-agent 763 | org.eclipse.jetty:jetty-servlets 764 | org.scala-sbt:test-interface 765 | org.scala-sbt.ivy:ivy 766 | org.scala-sbt:sbt 767 | org.scala-sbt:main_2.12 768 | org.scala-sbt:run_2.12 769 | org.scala-sbt:actions_2.12 770 | org.scala-sbt:command_2.12 771 | org.scala-sbt:logic_2.12 772 | org.scala-sbt:util-cache_2.12 773 | org.scala-sbt:main-settings_2.12 774 | org.scala-sbt:task-system_2.12 775 | org.scala-sbt:collections_2.12 776 | org.scala-sbt:completion_2.12 777 | org.scala-sbt:testing_2.12 778 | org.scala-sbt:tasks_2.12 779 | org.scala-sbt:protocol_2.12 780 | org.scala-sbt:core-macros_2.12 781 | info.picocli:picocli 782 | com.sun.xml.bind:jaxb-core 783 | com.yammer.metrics:metrics-core 784 | xmlunit:xmlunit 785 | org.scala-sbt:util-position_2.12 786 | org.springframework.boot:spring-boot-configuration-processor 787 | com.typesafe.akka:akka-actor_2.12 788 | org.apache.maven.wagon:wagon-ssh-common 789 | org.glassfish:json 790 | org.mockito:mockito-all 791 | org.apache.tomcat:tomcat-juli 792 | org.scala-sbt:zinc-classpath_2.12 793 | org.scala-sbt:zinc-apiinfo_2.12 794 | org.scala-sbt:zinc-classfile_2.12 795 | org.jvnet.mimepull:mimepull 796 | org.scala-sbt:zinc-compile-core_2.12 797 | org.scala-sbt:zinc-core_2.12 798 | org.scala-sbt:zinc-persist_2.12 799 | org.mongodb:bson 800 | org.scala-sbt:zinc_2.12 801 | com.github.spullara.mustache.java:compiler 802 | com.puppycrawl.tools:checkstyle 803 | org.spire-math:jawn-parser_2.12 804 | org.apache.directory.project:project 805 | org.scala-sbt:librarymanagement-core_2.12 806 | software.amazon.awssdk:annotations 807 | org.apache.maven.enforcer:enforcer-api 808 | software.amazon.awssdk:utils 809 | org.apache.maven.enforcer:enforcer-rules 810 | org.jetbrains.kotlin:kotlin-script-runtime 811 | software.amazon.awssdk:http-client-spi 812 | com.univocity:univocity-parsers 813 | org.springframework.cloud:spring-cloud-commons-parent 814 | org.apache.pdfbox:fontbox 815 | org.apache.hadoop:hadoop-yarn 816 | net.sf.saxon:Saxon-HE 817 | org.unbescape:unbescape 818 | com.typesafe.netty:netty-reactive-streams-http 819 | org.scala-sbt:util-tracking_2.12 820 | org.glassfish.jersey.ext:jersey-entity-filtering 821 | com.github.spullara.mustache.java:mustache.java 822 | io.prometheus:parent 823 | org.slf4j:slf4j-nop 824 | org.scala-sbt:librarymanagement-ivy_2.12 825 | io.dropwizard.metrics:metrics-json 826 | software.amazon.awssdk:sdk-core 827 | org.apache.thrift:libthrift 828 | com.lihaoyi:fastparse-utils_2.12 829 | org.apache.pdfbox:pdfbox 830 | org.scala-sbt:scripted-plugin_2.12 831 | org.scala-sbt:scripted-sbt-redux_2.12 832 | org.mongodb:mongodb-driver-core 833 | software.amazon.awssdk:regions 834 | com.google.http-client:google-http-client-bom 835 | org.scala-lang.modules:scala-java8-compat_2.12 836 | jaxen:jaxen 837 | com.trueaccord.scalapb:scalapb-runtime_2.12 838 | com.yammer.metrics:metrics-parent 839 | software.amazon.awssdk:auth 840 | com.trueaccord.lenses:lenses_2.12 841 | com.fasterxml.jackson.module:jackson-module-paranamer 842 | software.amazon.awssdk:aws-core 843 | org.glassfish.jersey.media:jersey-media-json-jackson 844 | org.springframework.cloud:spring-cloud-function-dependencies 845 | software.amazon.awssdk:netty-nio-client 846 | software.amazon.awssdk:protocol-core 847 | com.fasterxml.jackson.datatype:jackson-datatype-guava 848 | org.sonarsource.parent:parent 849 | org.apache.maven.wagon:wagon-ssh 850 | software.amazon.awssdk:apache-client 851 | com.netflix.hystrix:hystrix-core 852 | org.antlr:ST4 853 | io.opencensus:opencensus-contrib-http-util 854 | com.github.luben:zstd-jni 855 | org.scala-sbt:zinc-compile_2.12 856 | javax.transaction:jta 857 | org.eclipse.collections:eclipse-collections-parent 858 | redis.clients:jedis 859 | com.eed3si9n:sjson-new-core_2.12 860 | org.apache.spark:spark-tags_2.11 861 | org.apache.tomcat:tomcat-annotations-api 862 | com.fasterxml.jackson.dataformat:jackson-dataformat-xml 863 | javax.servlet.jsp:jsp-api 864 | software.amazon.awssdk:profiles 865 | org.junit.vintage:junit-vintage-engine 866 | org.antlr:stringtemplate 867 | org.quartz-scheduler:quartz 868 | org.apache.maven.plugins:maven-javadoc-plugin 869 | io.prometheus:simpleclient 870 | com.google.api:gax 871 | org.scala-sbt:sbinary_2.12 872 | com.amazonaws:aws-java-sdk-lambda 873 | org.thymeleaf:thymeleaf 874 | org.apache.maven.plugins:maven-help-plugin 875 | net.sourceforge.htmlunit:htmlunit 876 | org.apache.felix:felix-parent 877 | org.hibernate.javax.persistence:hibernate-jpa-2.1-api 878 | org.jetbrains.kotlinx:kotlinx-coroutines-core 879 | com.eed3si9n:sjson-new-murmurhash_2.12 880 | com.fasterxml.jackson.datatype:jackson-datatypes-collections 881 | org.scala-sbt:util-scripted_2.12 882 | com.eed3si9n:gigahorse-okhttp_2.12 883 | com.eed3si9n:gigahorse-core_2.12 884 | it.unimi.dsi:fastutil 885 | com.amazonaws:aws-java-sdk-autoscaling 886 | org.osgi:org.osgi.core 887 | net.sourceforge.htmlunit:htmlunit-core-js 888 | org.apache.tika:tika-parent 889 | org.apache.hadoop:hadoop-yarn-common 890 | io.prometheus:simpleclient_common 891 | io.grpc:grpc-netty-shaded 892 | org.codehaus.janino:commons-compiler 893 | com.eed3si9n:sjson-new-scalajson_2.12 894 | org.codehaus.janino:janino 895 | org.apache.maven.plugin-tools:maven-plugin-tools-api 896 | net.sf.opencsv:opencsv 897 | org.apache.maven.surefire:surefire-junit-platform 898 | software.amazon.awssdk:aws-query-protocol 899 | org.apache.tomcat:tomcat-jdbc 900 | com.sun.jersey.contribs:jersey-apache-client4 901 | org.apache.lucene:lucene-misc 902 | org.apache.hadoop:hadoop-yarn-api 903 | org.apache.jackrabbit:jackrabbit-parent 904 | org.scalactic:scalactic_2.12 905 | com.amazonaws:aws-java-sdk-cloudformation 906 | org.springframework.security:spring-security-rsa 907 | org.apache.hadoop:hadoop-mapreduce-client-core 908 | org.apache.directory.server:apacheds-i18n 909 | org.apache.directory.api:api-util 910 | org.mortbay.jetty:servlet-api 911 | org.apache.hadoop:hadoop-hdfs 912 | net.sf.ehcache:ehcache-parent 913 | com.google.api:api-common 914 | org.apache.lucene:lucene-highlighter 915 | org.apache.lucene:lucene-memory 916 | org.jetbrains.kotlin:kotlin-compiler-embeddable 917 | org.mongodb:mongodb-driver 918 | com.amazonaws:aws-java-sdk-ses 919 | xmlenc:xmlenc 920 | org.sonarsource.scanner.cli:sonar-scanner-cli 921 | org.apache.maven.doxia:doxia-module-markdown 922 | org.glassfish:javax.json 923 | org.apache.directory.api:api-parent 924 | org.apache.hadoop:hadoop-mapreduce-client 925 | com.squareup.okhttp3:logging-interceptor 926 | org.apache.tika:tika-core 927 | org.apache.directory.api:api-asn1-api 928 | org.bouncycastle:bcpg-jdk15on 929 | org.codehaus.janino:janino-parent 930 | biz.aQute.bnd:biz.aQute.bndlib 931 | com.eed3si9n:shaded-scalajson_2.12 932 | com.tdunning:t-digest 933 | org.apache.lucene:lucene-join 934 | com.sun.activation:javax.activation 935 | org.apache.maven.plugins:maven-checkstyle-plugin 936 | org.fusesource.jansi:jansi-project 937 | org.apache.maven.scm:maven-scm-api 938 | org.springframework.boot:spring-boot-starter-thymeleaf 939 | net.sourceforge.nekohtml:nekohtml 940 | org.apache.directory.server:apacheds-kerberos-codec 941 | org.scala-sbt:template-resolver 942 | org.easymock:easymock 943 | io.opentracing:parent 944 | org.apache.lucene:lucene-grouping 945 | org.apache.kafka:kafka_2.11 946 | cglib:cglib-parent 947 | org.apache.maven.wagon:wagon-http 948 | org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec 949 | io.grpc:grpc-netty 950 | com.amazonaws:aws-java-sdk-ssm 951 | org.apache.directory.server:apacheds-parent 952 | org.elasticsearch:elasticsearch 953 | org.apache.lucene:lucene-backward-codecs 954 | org.apache.lucene:lucene-suggest 955 | org.apache.maven.surefire:surefire-testng 956 | org.apache.hadoop:hadoop-yarn-server 957 | net.sf.jtidy:jtidy 958 | org.apache.directory.api:api-asn1-parent 959 | io.fabric8:kubernetes-client-bom 960 | com.fasterxml.jackson.module:jackson-module-afterburner 961 | org.mongodb:mongo-java-driver 962 | software.amazon.awssdk:aws-json-protocol 963 | nekohtml:nekohtml 964 | org.parboiled:parboiled-core 965 | com.esotericsoftware:minlog 966 | com.google.auto.value:auto-value 967 | com.google.cloud:google-cloud-clients 968 | com.github.cb372:scalacache-core_2.12 969 | com.amazonaws:aws-java-sdk-iam 970 | com.googlecode.java-diff-utils:diffutils 971 | org.apache.maven.surefire:surefire-testng-utils 972 | org.apache.lucene:lucene-spatial 973 | com.amazonaws:aws-java-sdk-cognitoidentity 974 | com.google.auto:auto-common 975 | org.liquibase:liquibase-parent 976 | org.springframework.security:spring-security-test 977 | org.springframework.cloud:spring-cloud-gcp-dependencies 978 | org.hamcrest:hamcrest-all 979 | org.liquibase:liquibase-core 980 | com.github.cb372:scalacache-caffeine_2.12 981 | com.squareup.retrofit2:parent 982 | org.ow2.asm:asm-debug-all 983 | com.google.api:gax-grpc 984 | org.scala-sbt.ipcsocket:ipcsocket 985 | io.zipkin.reporter2:zipkin-reporter-bom 986 | com.amazonaws:aws-java-sdk-cloudfront 987 | org.kohsuke:pom 988 | org.jline:jline 989 | org.hibernate:hibernate-entitymanager 990 | org.apache.maven.wagon:wagon-webdav-jackrabbit 991 | org.glassfish:javax.el 992 | cglib:cglib 993 | com.amazonaws:aws-java-sdk-route53 994 | nekohtml:xercesMinimal 995 | com.rabbitmq:amqp-client 996 | org.apache.jackrabbit:jackrabbit-webdav 997 | xml-resolver:xml-resolver 998 | org.apache.maven.shared:maven-repository-builder 999 | net.java.dev.jets3t:jets3t 1000 | org.eclipse.jdt.core.compiler:ecj 1001 | -------------------------------------------------------------------------------- /doc/Top1000-2020.txt: -------------------------------------------------------------------------------- 1 | org.codehaus.plexus:plexus-utils 2 | org.slf4j:slf4j-api 3 | com.google.guava:guava 4 | org.apache.maven:maven-model 5 | org.apache.maven:maven-plugin-api 6 | org.apache.maven:maven-artifact 7 | org.codehaus.plexus:plexus-interpolation 8 | org.apache.maven:maven-repository-metadata 9 | commons-codec:commons-codec 10 | org.apache.maven:maven-settings 11 | junit:junit 12 | org.apache.maven:maven-core 13 | commons-io:commons-io 14 | org.ow2.asm:asm 15 | org.apache.commons:commons-lang3 16 | com.fasterxml.jackson.core:jackson-core 17 | org.apache.maven.shared:maven-shared-utils 18 | org.apache.httpcomponents:httpclient 19 | org.apache.httpcomponents:httpcore 20 | com.google.code.findbugs:jsr305 21 | com.fasterxml.jackson.core:jackson-databind 22 | commons-logging:commons-logging 23 | org.apache.maven:maven-project 24 | org.apache.maven:maven-profile 25 | org.apache.maven:maven-artifact-manager 26 | com.fasterxml.jackson.core:jackson-annotations 27 | org.codehaus.plexus:plexus-component-annotations 28 | org.apache.maven:maven-plugin-registry 29 | org.apache.maven.reporting:maven-reporting-api 30 | org.codehaus.plexus:plexus-classworlds 31 | org.codehaus.plexus:plexus-container-default 32 | commons-lang:commons-lang 33 | org.apache.commons:commons-compress 34 | org.codehaus.plexus:plexus-archiver 35 | org.apache.maven:maven-error-diagnostics 36 | org.apache.maven:maven-plugin-descriptor 37 | org.apache.maven.doxia:doxia-sink-api 38 | org.apache.maven:maven-plugin-parameter-documenter 39 | org.apache.maven:maven-monitor 40 | com.google.protobuf:protobuf-java 41 | org.codehaus.plexus:plexus-io 42 | com.google.errorprone:error_prone_annotations 43 | classworlds:classworlds 44 | org.apache.maven.wagon:wagon-provider-api 45 | commons-collections:commons-collections 46 | org.hamcrest:hamcrest-core 47 | org.springframework:spring-core 48 | commons-cli:commons-cli 49 | org.apache.maven.shared:maven-common-artifact-filters 50 | joda-time:joda-time 51 | com.google.code.gson:gson 52 | org.springframework:spring-beans 53 | org.apache.maven:maven-model-builder 54 | org.apache.maven:maven-settings-builder 55 | org.yaml:snakeyaml 56 | org.apache.maven:maven-toolchain 57 | mysql:mysql-connector-java 58 | org.apache.maven:maven-aether-provider 59 | commons-beanutils:commons-beanutils 60 | org.apache.maven:maven-archiver 61 | org.slf4j:jcl-over-slf4j 62 | org.springframework:spring-context 63 | org.apache.maven.plugins:maven-compiler-plugin 64 | org.springframework:spring-aop 65 | org.apache.maven.shared:maven-filtering 66 | org.sonatype.sisu:sisu-guice 67 | org.apache.maven.plugins:maven-surefire-plugin 68 | net.bytebuddy:byte-buddy 69 | org.codehaus.mojo:animal-sniffer-annotations 70 | com.google.j2objc:j2objc-annotations 71 | org.apache.maven.plugins:maven-resources-plugin 72 | org.sonatype.plexus:plexus-sec-dispatcher 73 | org.springframework:spring-expression 74 | org.apache.maven.surefire:surefire-booter 75 | org.apache.maven.surefire:surefire-api 76 | org.sonatype.plexus:plexus-build-api 77 | org.codehaus.plexus:plexus-compiler-api 78 | org.objenesis:objenesis 79 | org.ow2.asm:asm-tree 80 | org.checkerframework:checker-qual 81 | org.apache.maven.surefire:maven-surefire-common 82 | org.apache.logging.log4j:log4j-api 83 | org.codehaus.plexus:plexus-compiler-javac 84 | org.codehaus.plexus:plexus-compiler-manager 85 | log4j:log4j 86 | com.thoughtworks.qdox:qdox 87 | org.junit.platform:junit-platform-commons 88 | org.sonatype.plexus:plexus-cipher 89 | io.grpc:grpc-context 90 | org.springframework.boot:spring-boot-starter 91 | org.springframework:spring-web 92 | org.ow2.asm:asm-analysis 93 | commons-digester:commons-digester 94 | javax.inject:javax.inject 95 | ch.qos.logback:logback-core 96 | org.javassist:javassist 97 | ch.qos.logback:logback-classic 98 | org.junit.platform:junit-platform-engine 99 | org.codehaus.plexus:plexus-interactivity-api 100 | javax.xml.bind:jaxb-api 101 | org.sonatype.sisu:sisu-inject-bean 102 | org.ow2.asm:asm-commons 103 | org.sonatype.aether:aether-api 104 | xml-apis:xml-apis 105 | org.springframework.boot:spring-boot 106 | org.sonatype.sisu:sisu-inject-plexus 107 | org.springframework.boot:spring-boot-autoconfigure 108 | org.apache.maven.plugin-tools:maven-plugin-annotations 109 | org.apache.maven.plugins:maven-jar-plugin 110 | org.apache.maven.doxia:doxia-core 111 | org.mockito:mockito-core 112 | org.sonatype.aether:aether-util 113 | org.apache.maven.doxia:doxia-site-renderer 114 | org.apache.maven.doxia:doxia-decoration-model 115 | com.squareup.okio:okio 116 | org.codehaus.plexus:plexus-java 117 | org.tukaani:xz 118 | org.junit.jupiter:junit-jupiter-api 119 | org.apache.maven.doxia:doxia-module-xhtml 120 | org.sonatype.aether:aether-spi 121 | org.sonatype.aether:aether-impl 122 | org.apache.velocity:velocity 123 | com.fasterxml.jackson.datatype:jackson-datatype-jsr310 124 | javax.annotation:javax.annotation-api 125 | io.grpc:grpc-stub 126 | org.apache.maven.doxia:doxia-logging-api 127 | org.apache.maven.shared:maven-shared-incremental 128 | io.grpc:grpc-protobuf 129 | org.apache.maven.plugins:maven-clean-plugin 130 | net.bytebuddy:byte-buddy-agent 131 | io.grpc:grpc-protobuf-lite 132 | commons-validator:commons-validator 133 | io.grpc:grpc-api 134 | org.slf4j:jul-to-slf4j 135 | org.eclipse.sisu:org.eclipse.sisu.inject 136 | org.apiguardian:apiguardian-api 137 | io.netty:netty-common 138 | org.eclipse.sisu:org.eclipse.sisu.plexus 139 | io.netty:netty-buffer 140 | com.squareup.okhttp3:okhttp 141 | net.java.dev.jna:jna 142 | org.springframework:spring-webmvc 143 | org.codehaus.plexus:plexus-velocity 144 | org.apache.maven.shared:file-management 145 | aopalliance:aopalliance 146 | org.apache.maven.doxia:doxia-module-fml 147 | org.eclipse.aether:aether-util 148 | io.netty:netty-transport 149 | xerces:xercesImpl 150 | org.opentest4j:opentest4j 151 | org.junit.jupiter:junit-jupiter-engine 152 | com.fasterxml.jackson.datatype:jackson-datatype-jdk8 153 | org.apache.maven.shared:maven-dependency-tree 154 | org.scala-lang:scala-library 155 | org.springframework.boot:spring-boot-starter-logging 156 | com.google.guava:failureaccess 157 | org.springframework:spring-jcl 158 | org.apache.maven.shared:maven-artifact-transfer 159 | org.apache.maven.shared:maven-shared-io 160 | io.netty:netty-codec 161 | org.springframework:spring-tx 162 | antlr:antlr 163 | org.jboss.logging:jboss-logging 164 | org.assertj:assertj-core 165 | net.minidev:json-smart 166 | org.reactivestreams:reactive-streams 167 | org.bouncycastle:bcprov-jdk15on 168 | com.google.inject:guice 169 | org.springframework.boot:spring-boot-starter-web 170 | org.apache.maven.reporting:maven-reporting-impl 171 | com.google.guava:listenablefuture 172 | org.apache.maven.plugins:maven-install-plugin 173 | org.scala-lang:scala-reflect 174 | io.netty:netty-handler 175 | javax.activation:activation 176 | org.springframework:spring-test 177 | org.codehaus.plexus:plexus-i18n 178 | org.springframework.boot:spring-boot-starter-json 179 | com.fasterxml:classmate 180 | org.springframework.boot:spring-boot-test 181 | javax.validation:validation-api 182 | io.netty:netty-resolver 183 | org.springframework.boot:spring-boot-starter-tomcat 184 | oro:oro 185 | org.ow2.asm:asm-util 186 | net.minidev:accessors-smart 187 | org.junit.jupiter:junit-jupiter-params 188 | com.jcraft:jsch 189 | org.checkerframework:checker-compat-qual 190 | org.apache.maven.surefire:surefire-logger-api 191 | org.springframework.boot:spring-boot-test-autoconfigure 192 | org.springframework.boot:spring-boot-starter-test 193 | backport-util-concurrent:backport-util-concurrent 194 | org.json:json 195 | com.amazonaws:aws-java-sdk-core 196 | jline:jline 197 | org.xerial.snappy:snappy-java 198 | org.apache.tomcat.embed:tomcat-embed-core 199 | org.slf4j:slf4j-jdk14 200 | javax.servlet:javax.servlet-api 201 | org.apache.maven:maven-compat 202 | com.fasterxml.jackson.module:jackson-module-parameter-names 203 | org.apache.ant:ant 204 | org.aspectj:aspectjweaver 205 | jakarta.xml.bind:jakarta.xml.bind-api 206 | org.bouncycastle:bcpkix-jdk15on 207 | javax.enterprise:cdi-api 208 | org.apache.logging.log4j:log4j-core 209 | org.apache.tomcat.embed:tomcat-embed-websocket 210 | com.fasterxml.jackson.dataformat:jackson-dataformat-cbor 211 | io.netty:netty-codec-http 212 | org.springframework:spring-jdbc 213 | javax.annotation:jsr250-api 214 | org.apache.httpcomponents:httpmime 215 | org.apache.ant:ant-launcher 216 | com.amazonaws:jmespath-java 217 | com.jayway.jsonpath:json-path 218 | net.java.dev.jna:jna-platform 219 | com.fasterxml.jackson.module:jackson-module-jaxb-annotations 220 | jakarta.activation:jakarta.activation-api 221 | com.google.api.grpc:proto-google-common-protos 222 | org.eclipse.jetty:jetty-util 223 | org.codehaus.jackson:jackson-core-asl 224 | org.apache.xbean:xbean-reflect 225 | org.eclipse.jetty:jetty-io 226 | org.apache.logging.log4j:log4j-to-slf4j 227 | io.grpc:grpc-core 228 | org.apache.maven:apache-maven 229 | org.apache.maven.plugins:maven-deploy-plugin 230 | com.typesafe:config 231 | org.iq80.snappy:snappy 232 | org.junit.jupiter:junit-jupiter 233 | org.projectlombok:lombok 234 | com.google.protobuf:protobuf-java-util 235 | com.zaxxer:HikariCP 236 | org.antlr:antlr4-runtime 237 | com.thoughtworks.xstream:xstream 238 | org.jetbrains.kotlin:kotlin-stdlib 239 | commons-httpclient:commons-httpclient 240 | org.apache.maven.plugins:maven-site-plugin 241 | org.eclipse.jetty:jetty-http 242 | org.hdrhistogram:HdrHistogram 243 | jakarta.annotation:jakarta.annotation-api 244 | org.postgresql:postgresql 245 | org.slf4j:slf4j-log4j12 246 | org.springframework.boot:spring-boot-starter-aop 247 | org.springframework.boot:spring-boot-loader-tools 248 | org.jetbrains.kotlin:kotlin-stdlib-common 249 | org.codehaus.jackson:jackson-mapper-asl 250 | org.scala-lang:scala-compiler 251 | com.google.http-client:google-http-client 252 | javax.activation:javax.activation-api 253 | org.hibernate.validator:hibernate-validator 254 | org.xmlunit:xmlunit-core 255 | org.apache.maven.plugins:maven-assembly-plugin 256 | com.sun.istack:istack-commons-runtime 257 | com.google.auth:google-auth-library-credentials 258 | org.apache.commons:commons-math3 259 | org.hamcrest:hamcrest 260 | org.apache.maven.plugins:maven-dependency-plugin 261 | com.google.auto.value:auto-value-annotations 262 | org.scala-lang.modules:scala-xml_2.12 263 | org.apache.commons:commons-exec 264 | asm:asm 265 | org.springframework.data:spring-data-commons 266 | org.springframework.boot:spring-boot-starter-jdbc 267 | org.glassfish.jaxb:txw2 268 | org.glassfish.jaxb:jaxb-runtime 269 | com.google.auth:google-auth-library-oauth2-http 270 | com.google.collections:google-collections 271 | org.skyscreamer:jsonassert 272 | com.amazonaws:aws-java-sdk-s3 273 | com.thoughtworks.paranamer:paranamer 274 | org.eclipse.aether:aether-api 275 | com.beust:jcommander 276 | com.fasterxml.jackson.dataformat:jackson-dataformat-yaml 277 | org.jsoup:jsoup 278 | com.amazonaws:aws-java-sdk-kms 279 | dom4j:dom4j 280 | org.hibernate:hibernate-core 281 | org.junit.platform:junit-platform-launcher 282 | com.github.ben-manes.caffeine:caffeine 283 | org.codehaus.groovy:groovy 284 | org.eclipse.aether:aether-spi 285 | org.eclipse.aether:aether-impl 286 | com.sun.xml.bind:jaxb-impl 287 | org.eclipse.jetty:jetty-server 288 | io.swagger:swagger-annotations 289 | com.google.api:api-common 290 | commons-logging:commons-logging-api 291 | com.google.http-client:google-http-client-jackson2 292 | com.sun.jersey:jersey-core 293 | io.grpc:grpc-netty-shaded 294 | io.netty:netty-transport-native-epoll 295 | org.apache.commons:commons-text 296 | org.springframework.boot:spring-boot-actuator 297 | net.sf.jopt-simple:jopt-simple 298 | org.mockito:mockito-junit-jupiter 299 | io.grpc:grpc-auth 300 | org.jacoco:org.jacoco.agent 301 | com.google.api.grpc:proto-google-iam-v1 302 | org.jetbrains:annotations 303 | org.apache.commons:commons-collections4 304 | org.dom4j:dom4j 305 | org.springframework:spring-orm 306 | org.springframework.boot:spring-boot-starter-actuator 307 | com.vaadin.external.google:android-json 308 | org.apache.maven.plugins:maven-antrun-plugin 309 | org.apache.zookeeper:zookeeper 310 | xpp3:xpp3_min 311 | io.netty:netty 312 | io.projectreactor:reactor-core 313 | org.springframework.boot:spring-boot-maven-plugin 314 | commons-configuration:commons-configuration 315 | com.github.jnr:jffi 316 | software.amazon.ion:ion-java 317 | com.google.api:gax 318 | javax.servlet:servlet-api 319 | org.springframework.boot:spring-boot-actuator-autoconfigure 320 | org.springframework.security:spring-security-core 321 | org.apache.avro:avro 322 | org.apache.kafka:kafka-clients 323 | io.netty:netty-transport-native-unix-common 324 | org.hibernate.common:hibernate-commons-annotations 325 | xmlpull:xmlpull 326 | io.micrometer:micrometer-core 327 | io.dropwizard.metrics:metrics-core 328 | org.jboss:jandex 329 | io.netty:netty-codec-socks 330 | io.netty:netty-codec-http2 331 | org.codehaus.woodstox:stax2-api 332 | io.grpc:grpc-grpclb 333 | io.netty:netty-handler-proxy 334 | io.grpc:grpc-alts 335 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider 336 | io.opencensus:opencensus-api 337 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-base 338 | org.springframework:spring-aspects 339 | org.eclipse.jetty:jetty-servlet 340 | org.springframework.boot:spring-boot-starter-data-jpa 341 | commons-net:commons-net 342 | jakarta.validation:jakarta.validation-api 343 | org.springframework:spring-context-support 344 | org.springframework.boot:spring-boot-starter-validation 345 | org.apache.tomcat.embed:tomcat-embed-el 346 | org.hamcrest:hamcrest-library 347 | org.springframework.security:spring-security-web 348 | javax.ws.rs:javax.ws.rs-api 349 | org.jacoco:org.jacoco.core 350 | org.eclipse.jetty:jetty-security 351 | io.swagger:swagger-models 352 | org.apache.maven.surefire:common-java5 353 | org.threeten:threetenbp 354 | org.apache.logging.log4j:log4j-slf4j-impl 355 | org.antlr:antlr-runtime 356 | org.jdom:jdom2 357 | org.jacoco:org.jacoco.report 358 | org.jvnet.staxex:stax-ex 359 | org.springframework.data:spring-data-jpa 360 | com.google.api:gax-grpc 361 | org.apache.maven:maven-builder-support 362 | org.apache.maven.doxia:doxia-module-xdoc 363 | org.apache.maven.doxia:doxia-module-apt 364 | org.springframework.security:spring-security-config 365 | commons-chain:commons-chain 366 | org.jetbrains.kotlin:kotlin-reflect 367 | io.netty:netty-all 368 | com.sun.jersey:jersey-client 369 | com.sun.activation:jakarta.activation 370 | org.lz4:lz4-java 371 | org.apache.felix:maven-bundle-plugin 372 | org.latencyutils:LatencyUtils 373 | org.glassfish.jersey.core:jersey-common 374 | org.apache.commons:commons-pool2 375 | org.codehaus.groovy:groovy-xml 376 | com.googlecode.json-simple:json-simple 377 | org.eclipse.jetty:jetty-xml 378 | com.sun.xml.fastinfoset:FastInfoset 379 | org.apache.velocity:velocity-tools 380 | org.scala-lang.modules:scala-parser-combinators_2.12 381 | org.apache.maven.plugins:maven-shade-plugin 382 | org.jetbrains.kotlin:kotlin-stdlib-jdk7 383 | org.springframework.boot:spring-boot-starter-security 384 | org.glassfish:jakarta.el 385 | org.slf4j:slf4j-simple 386 | org.reflections:reflections 387 | org.mortbay.jetty:jetty-util 388 | org.scala-sbt:util-interface 389 | org.fusesource.jansi:jansi 390 | org.apache.maven.shared:maven-invoker 391 | org.eclipse.jgit:org.eclipse.jgit 392 | org.apache.maven.shared:maven-dependency-analyzer 393 | sslext:sslext 394 | com.googlecode.javaewah:JavaEWAH 395 | org.apache.struts:struts-core 396 | org.glassfish.jersey.core:jersey-client 397 | org.scala-sbt:compiler-bridge_2.12 398 | org.apache.struts:struts-taglib 399 | org.apache.struts:struts-tiles 400 | org.jetbrains.kotlin:kotlin-stdlib-jdk8 401 | org.junit:junit-bom 402 | com.h2database:h2 403 | org.codehaus.jettison:jettison 404 | org.apache.maven.surefire:surefire-junit4 405 | com.google.api-client:google-api-client 406 | com.ibm.icu:icu4j 407 | com.nimbusds:nimbus-jose-jwt 408 | io.opencensus:opencensus-contrib-http-util 409 | org.codehaus.groovy:groovy-json 410 | org.glassfish.hk2:hk2-api 411 | com.fasterxml.woodstox:woodstox-core 412 | org.glassfish.hk2:hk2-locator 413 | org.jacoco:jacoco-maven-plugin 414 | org.glassfish.hk2:hk2-utils 415 | com.google.oauth-client:google-oauth-client 416 | org.codehaus.plexus:plexus-digest 417 | info.picocli:picocli 418 | org.glassfish.hk2:osgi-resource-locator 419 | org.codehaus.jackson:jackson-jaxrs 420 | org.apache.hadoop:hadoop-common 421 | org.codehaus.mojo:exec-maven-plugin 422 | org.seleniumhq.selenium:selenium-api 423 | org.codehaus.jackson:jackson-xc 424 | org.seleniumhq.selenium:selenium-remote-driver 425 | org.springframework.plugin:spring-plugin-core 426 | javax.xml.stream:stax-api 427 | org.eclipse.jetty:jetty-webapp 428 | org.vafer:jdependency 429 | org.apache.poi:poi 430 | org.springframework:spring-messaging 431 | javax.ws.rs:jsr311-api 432 | org.junit.vintage:junit-vintage-engine 433 | org.apache.hadoop:hadoop-annotations 434 | org.glassfish.hk2.external:aopalliance-repackaged 435 | org.mozilla:rhino 436 | stax:stax-api 437 | com.lmax:disruptor 438 | commons-beanutils:commons-beanutils-core 439 | org.apache.maven.plugins:maven-release-plugin 440 | org.apache.commons:commons-csv 441 | org.eclipse.jetty:jetty-client 442 | org.testng:testng 443 | org.apache.maven.surefire:surefire-grouper 444 | org.mortbay.jetty:jetty 445 | org.apache.httpcomponents:httpcore-nio 446 | org.apache.poi:poi-ooxml 447 | com.google.android:annotations 448 | com.google.cloud:google-cloud-core 449 | com.github.luben:zstd-jni 450 | io.springfox:springfox-spi 451 | org.seleniumhq.selenium:selenium-support 452 | org.apache.maven.plugins:maven-enforcer-plugin 453 | io.perfmark:perfmark-api 454 | org.jetbrains.kotlinx:kotlinx-coroutines-core 455 | org.mapstruct:mapstruct 456 | org.beanshell:bsh 457 | org.apache.hadoop:hadoop-auth 458 | org.scala-sbt:compiler-interface 459 | org.seleniumhq.selenium:selenium-chrome-driver 460 | org.seleniumhq.selenium:selenium-firefox-driver 461 | org.apache.lucene:lucene-core 462 | org.springframework.boot:spring-boot-buildpack-platform 463 | org.apache.maven.doxia:doxia-integration-tools 464 | com.sun.jersey:jersey-server 465 | com.github.stephenc.jcip:jcip-annotations 466 | com.sun.jersey:jersey-json 467 | org.apache.xmlbeans:xmlbeans 468 | com.sun.mail:javax.mail 469 | com.amazonaws:aws-java-sdk-sqs 470 | io.springfox:springfox-spring-web 471 | net.jcip:jcip-annotations 472 | commons-fileupload:commons-fileupload 473 | net.sf.saxon:Saxon-HE 474 | org.springframework.plugin:spring-plugin-metadata 475 | com.typesafe:ssl-config-core_2.12 476 | io.springfox:springfox-schema 477 | org.freemarker:freemarker 478 | org.codehaus.groovy:groovy-all 479 | org.apache.httpcomponents:httpasyncclient 480 | org.seleniumhq.selenium:selenium-java 481 | org.apache.maven.doxia:doxia-skin-model 482 | io.springfox:springfox-core 483 | jakarta.transaction:jakarta.transaction-api 484 | org.seleniumhq.selenium:selenium-ie-driver 485 | org.slf4j:log4j-over-slf4j 486 | org.apache.curator:curator-framework 487 | org.apache.maven.plugins:maven-failsafe-plugin 488 | org.seleniumhq.selenium:selenium-safari-driver 489 | org.apache.poi:poi-ooxml-schemas 490 | javax.mail:mail 491 | org.springframework.boot:spring-boot-devtools 492 | org.conscrypt:conscrypt-openjdk-uber 493 | org.apache.curator:curator-client 494 | org.glassfish.jersey.core:jersey-server 495 | io.reactivex:rxjava 496 | org.ccil.cowan.tagsoup:tagsoup 497 | org.scala-lang.modules:scala-xml_2.11 498 | org.apache.lucene:lucene-analyzers-common 499 | com.fasterxml.jackson.module:jackson-module-paranamer 500 | org.seleniumhq.selenium:selenium-edge-driver 501 | org.scala-sbt:io_2.12 502 | io.springfox:springfox-swagger2 503 | org.antlr:ST4 504 | com.amazonaws:aws-java-sdk-sts 505 | io.springfox:springfox-swagger-common 506 | org.springframework.security:spring-security-crypto 507 | org.scala-lang.modules:scala-parser-combinators_2.11 508 | com.jcraft:jzlib 509 | org.scala-sbt:zinc-core_2.12 510 | org.scala-sbt:zinc-apiinfo_2.12 511 | org.scala-sbt:zinc-classfile_2.12 512 | org.scala-sbt:zinc-classpath_2.12 513 | org.scala-sbt:zinc-persist_2.12 514 | org.scala-sbt:zinc-compile-core_2.12 515 | org.scala-sbt:zinc_2.12 516 | org.apache.curator:curator-recipes 517 | com.github.jnr:jnr-constants 518 | org.codehaus.mojo:build-helper-maven-plugin 519 | org.scala-sbt:util-logging_2.12 520 | org.scala-sbt:util-relation_2.12 521 | org.spark-project.spark:unused 522 | org.scala-sbt:util-control_2.12 523 | org.springframework.boot:spring-boot-configuration-processor 524 | org.springframework.retry:spring-retry 525 | io.github.classgraph:classgraph 526 | org.apache.maven.resolver:maven-resolver-api 527 | jakarta.persistence:jakarta.persistence-api 528 | org.glassfish:javax.json 529 | org.springframework.boot:spring-boot-gradle-plugin 530 | org.glassfish.jersey.media:jersey-media-jaxb 531 | org.apache.maven.surefire:surefire-junit-platform 532 | org.codehaus.janino:commons-compiler 533 | org.codehaus.janino:janino 534 | org.aspectj:aspectjrt 535 | commons-pool:commons-pool 536 | com.amazonaws:aws-java-sdk-dynamodb 537 | org.seleniumhq.selenium:selenium-opera-driver 538 | org.apache.maven.resolver:maven-resolver-util 539 | org.apache.lucene:lucene-queryparser 540 | org.scala-sbt:launcher-interface 541 | com.github.jnr:jnr-posix 542 | org.apache.ivy:ivy 543 | org.apache.maven.surefire:surefire-extensions-api 544 | javax.servlet.jsp:jsp-api 545 | org.apache.lucene:lucene-queries 546 | xalan:xalan 547 | org.apache.hbase:hbase-client 548 | org.apache.maven.plugins:maven-war-plugin 549 | org.apache.maven.plugins:maven-source-plugin 550 | com.github.jnr:jnr-ffi 551 | com.lihaoyi:sourcecode_2.12 552 | org.glassfish.hk2.external:javax.inject 553 | com.puppycrawl.tools:checkstyle 554 | org.eclipse.jetty:jetty-continuation 555 | org.jdom:jdom 556 | org.scala-sbt:test-agent 557 | com.googlecode.libphonenumber:libphonenumber 558 | org.glassfish.jersey.containers:jersey-container-servlet-core 559 | com.github.virtuald:curvesapi 560 | org.scala-sbt:collections_2.12 561 | org.scala-sbt:core-macros_2.12 562 | com.amazonaws:aws-java-sdk-sns 563 | org.scala-sbt:sbt 564 | org.scala-sbt:main_2.12 565 | org.scala-sbt:logic_2.12 566 | org.scala-sbt:run_2.12 567 | org.scala-sbt:command_2.12 568 | org.scala-sbt:main-settings_2.12 569 | org.scala-sbt:actions_2.12 570 | org.scala-sbt:completion_2.12 571 | org.scala-sbt:tasks_2.12 572 | org.scala-sbt:testing_2.12 573 | org.scala-sbt:task-system_2.12 574 | org.scala-sbt:protocol_2.12 575 | org.apache.hadoop:hadoop-yarn-common 576 | org.codehaus.plexus:plexus-resources 577 | com.squareup.okhttp3:okhttp-urlconnection 578 | org.apache.thrift:libthrift 579 | org.scala-sbt:test-interface 580 | io.springfox:springfox-swagger-ui 581 | com.amazonaws:aws-java-sdk 582 | org.eclipse.jetty.websocket:websocket-api 583 | org.apache.maven.reporting:maven-reporting-exec 584 | biz.aQute.bnd:biz.aQute.bndlib 585 | org.apache.lucene:lucene-sandbox 586 | org.scala-sbt:scripted-plugin_2.12 587 | org.apache.hadoop:hadoop-yarn-api 588 | org.eclipse.jetty.websocket:websocket-common 589 | com.fasterxml.jackson.datatype:jackson-datatype-joda 590 | org.eclipse.jetty.websocket:websocket-client 591 | org.apache.maven.shared:maven-doxia-tools 592 | org.scala-sbt:librarymanagement-core_2.12 593 | org.springframework.cloud:spring-cloud-commons 594 | com.github.spotbugs:spotbugs-annotations 595 | io.prometheus:simpleclient 596 | com.squareup.okhttp3:logging-interceptor 597 | org.scala-sbt:librarymanagement-ivy_2.12 598 | org.springframework.cloud:spring-cloud-context 599 | net.logstash.logback:logstash-logback-encoder 600 | com.amazonaws:aws-java-sdk-ec2 601 | org.scala-sbt.ivy:ivy 602 | com.github.jnr:jnr-x86asm 603 | com.lihaoyi:fastparse_2.12 604 | org.scala-sbt:util-cache_2.12 605 | com.eed3si9n:sjson-new-scalajson_2.12 606 | org.scala-sbt:util-position_2.12 607 | io.rest-assured:rest-assured 608 | com.eed3si9n:sjson-new-core_2.12 609 | org.scala-sbt:zinc-compile_2.12 610 | io.rest-assured:json-path 611 | com.carrotsearch:hppc 612 | io.prometheus:simpleclient_common 613 | com.swoval:file-tree-views 614 | org.springframework.cloud:spring-cloud-starter 615 | org.apache.maven.enforcer:enforcer-api 616 | org.jetbrains.kotlin:kotlin-script-runtime 617 | org.scala-lang.modules:scala-java8-compat_2.12 618 | org.apache.maven.enforcer:enforcer-rules 619 | org.flywaydb:flyway-core 620 | org.scala-sbt:util-tracking_2.12 621 | org.scala-sbt:sbinary_2.12 622 | org.apache.hadoop:hadoop-hdfs 623 | io.rest-assured:rest-assured-common 624 | com.sun.xml.bind:jaxb-core 625 | org.apache.hadoop:hadoop-mapreduce-client-core 626 | com.sun.activation:javax.activation 627 | com.fasterxml.jackson.dataformat:jackson-dataformat-xml 628 | org.apache.directory.server:apacheds-i18n 629 | xmlenc:xmlenc 630 | org.apache.directory.api:api-util 631 | org.scala-sbt:zinc-lm-integration_2.12 632 | io.dropwizard.metrics:metrics-jvm 633 | io.rest-assured:xml-path 634 | io.netty:netty-resolver-dns 635 | com.google.cloud:google-cloud-core-http 636 | io.swagger.core.v3:swagger-annotations 637 | org.apache.directory.api:api-asn1-api 638 | org.scala-sbt.ipcsocket:ipcsocket 639 | io.netty:netty-codec-dns 640 | org.apache.directory.server:apacheds-kerberos-codec 641 | net.sf.opencsv:opencsv 642 | it.unimi.dsi:fastutil 643 | com.google.http-client:google-http-client-appengine 644 | com.google.api:gax-httpjson 645 | org.osgi:org.osgi.core 646 | com.univocity:univocity-parsers 647 | com.fasterxml.jackson.datatype:jackson-datatype-guava 648 | com.sun.jersey.contribs:jersey-apache-client4 649 | io.spring.gradle:dependency-management-plugin 650 | io.get-coursier:lm-coursier-shaded_2.12 651 | com.github.spullara.mustache.java:compiler 652 | redis.clients:jedis 653 | org.unbescape:unbescape 654 | org.apache.yetus:audience-annotations 655 | org.apache.hadoop:hadoop-yarn-server-common 656 | com.google.inject.extensions:guice-assistedinject 657 | org.springframework:spring-oxm 658 | com.eed3si9n:sjson-new-murmurhash_2.12 659 | org.apache.pdfbox:fontbox 660 | org.glassfish.jersey.containers:jersey-container-servlet 661 | com.netflix.archaius:archaius-core 662 | org.scala-lang.modules:scala-collection-compat_2.12 663 | org.apache.hbase:hbase-server 664 | org.apache.maven.surefire:common-junit3 665 | org.apache.maven.surefire:common-junit4 666 | com.squareup.okhttp:okhttp 667 | io.reactivex.rxjava2:rxjava 668 | org.apache.pdfbox:pdfbox 669 | com.google.inject.extensions:guice-servlet 670 | org.apache.hadoop:hadoop-mapreduce-client-jobclient 671 | org.apache.hadoop:hadoop-yarn-client 672 | org.eclipse.jetty:jetty-servlets 673 | org.springframework.security:spring-security-rsa 674 | com.google.code.findbugs:annotations 675 | io.jsonwebtoken:jjwt 676 | com.yammer.metrics:metrics-core 677 | org.sonatype.plugins:nexus-staging-maven-plugin 678 | com.amazonaws:aws-java-sdk-kinesis 679 | jaxen:jaxen 680 | org.springframework.integration:spring-integration-bom 681 | org.apache.maven.plugins:maven-checkstyle-plugin 682 | org.glassfish.jersey.bundles.repackaged:jersey-guava 683 | org.apache.maven.plugins:maven-help-plugin 684 | com.typesafe.akka:akka-actor_2.12 685 | com.eed3si9n:gigahorse-okhttp_2.12 686 | com.eed3si9n:gigahorse-core_2.12 687 | org.apache.hadoop:hadoop-mapreduce-client-common 688 | com.eed3si9n:shaded-scalajson_2.12 689 | org.mongodb:bson 690 | org.sonatype.nexus.maven:nexus-common 691 | javax.persistence:javax.persistence-api 692 | io.swagger.core.v3:swagger-models 693 | org.robolectric:android-all 694 | xalan:serializer 695 | org.hibernate:hibernate-validator 696 | com.github.jnr:jnr-unixsocket 697 | com.github.jnr:jnr-enxio 698 | com.github.fge:msg-simple 699 | org.jetbrains.kotlin:kotlin-compiler-embeddable 700 | org.apache.htrace:htrace-core 701 | com.github.fge:btf 702 | org.apache.hadoop:hadoop-client 703 | com.amazonaws:aws-java-sdk-cloudwatch 704 | org.fusesource.leveldbjni:leveldbjni-all 705 | cglib:cglib-nodep 706 | org.mortbay.jetty:servlet-api 707 | com.fasterxml.jackson.dataformat:jackson-dataformat-smile 708 | org.apache.maven.plugins:maven-javadoc-plugin 709 | org.apache.maven.surefire:surefire-testng 710 | org.springframework.boot:spring-boot-starter-thymeleaf 711 | org.apache.maven.surefire:surefire-testng-utils 712 | org.scalactic:scalactic_2.12 713 | com.squareup:javapoet 714 | org.jvnet.mimepull:mimepull 715 | com.trueaccord.scalapb:scalapb-runtime_2.12 716 | com.esotericsoftware:minlog 717 | org.glassfish.jersey.ext:jersey-entity-filtering 718 | org.mongodb:mongodb-driver-core 719 | io.netty:netty-tcnative-boringssl-static 720 | com.trueaccord.lenses:lenses_2.12 721 | io.qameta.allure:allure-commandline 722 | io.swagger:swagger-core 723 | com.101tec:zkclient 724 | io.dropwizard.metrics:metrics-json 725 | io.projectreactor.netty:reactor-netty 726 | org.antlr:stringtemplate 727 | net.jpountz.lz4:lz4 728 | org.easymock:easymock 729 | org.apache.hadoop:hadoop-mapreduce-client-shuffle 730 | org.glassfish.jersey.media:jersey-media-json-jackson 731 | javax.transaction:jta 732 | org.antlr:antlr4 733 | jakarta.ws.rs:jakarta.ws.rs-api 734 | org.joda:joda-convert 735 | org.apache.maven.scm:maven-scm-api 736 | org.apache.maven.wagon:wagon-http-shared 737 | com.microsoft.sqlserver:mssql-jdbc 738 | org.scala-sbt:template-resolver 739 | org.apache.hbase.connectors.spark:hbase-spark 740 | org.apache.tika:tika-core 741 | org.apache.hadoop:hadoop-mapreduce-client-app 742 | com.typesafe.netty:netty-reactive-streams 743 | org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec 744 | com.tdunning:t-digest 745 | javax.transaction:javax.transaction-api 746 | org.spire-math:jawn-parser_2.12 747 | com.amazonaws:aws-java-sdk-ssm 748 | com.intellij:annotations 749 | com.google.apis:google-api-services-storage 750 | org.apache.avro:avro-ipc 751 | org.quartz-scheduler:quartz 752 | org.fusesource.hawtbuf:hawtbuf 753 | com.squareup.retrofit2:retrofit 754 | org.springframework.security:spring-security-test 755 | com.netflix.hystrix:hystrix-core 756 | org.glassfish.jersey.inject:jersey-hk2 757 | org.thymeleaf:thymeleaf 758 | com.lihaoyi:fastparse-utils_2.12 759 | org.apache.maven.surefire:surefire-junit47 760 | org.apache.maven.wagon:wagon-ssh-common 761 | org.sonatype.nexus.plugins:nexus-restlet1x-model 762 | org.apache.maven.surefire:common-junit48 763 | org.sonarsource.scanner.api:sonar-scanner-api 764 | commons-dbcp:commons-dbcp 765 | org.sonatype.nexus:nexus-client-core 766 | com.sun.jersey.contribs:jersey-guice 767 | org.apache.maven.surefire:surefire-shared-utils 768 | org.apache.maven.scm:maven-scm-manager-plexus 769 | org.apache.maven.scm:maven-scm-provider-git-commons 770 | org.apache.maven.scm:maven-scm-provider-gitexe 771 | org.bouncycastle:bcpg-jdk15on 772 | net.java.dev.jets3t:jets3t 773 | org.apache.maven.plugin-tools:maven-plugin-tools-api 774 | com.github.fge:jackson-coreutils 775 | org.jetbrains.kotlin:kotlin-scripting-common 776 | org.jetbrains.kotlin:kotlin-scripting-jvm 777 | org.liquibase:liquibase-core 778 | org.slf4j:slf4j-nop 779 | com.amazonaws:aws-java-sdk-autoscaling 780 | org.springframework:spring-webflux 781 | com.amazonaws:aws-java-sdk-ses 782 | com.github.fge:uri-template 783 | com.googlecode.java-diff-utils:diffutils 784 | org.parboiled:parboiled-core 785 | com.amazonaws:aws-java-sdk-cloudformation 786 | org.apache-extras.beanshell:bsh 787 | org.scala-sbt:scripted-sbt-redux_2.12 788 | org.apache.maven.surefire:surefire-extensions-spi 789 | org.codehaus.groovy:groovy-templates 790 | org.eclipse.jetty.websocket:websocket-server 791 | dk.brics.automaton:automaton 792 | io.swagger.core.v3:swagger-core 793 | org.apache.hive:hive-common 794 | org.sonatype.spice.zapper:spice-zapper 795 | org.mongodb:mongo-java-driver 796 | org.apache.hive:hive-shims 797 | com.fasterxml.jackson.module:jackson-module-kotlin 798 | com.rabbitmq:amqp-client 799 | org.glassfish.hk2.external:jakarta.inject 800 | org.codehaus.woodstox:woodstox-core-asl 801 | org.apache.hive:hive-serde 802 | org.jodd:jodd-core 803 | org.jetbrains.kotlin:kotlin-gradle-plugin 804 | org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable 805 | org.jetbrains.kotlin:kotlin-android-extensions 806 | org.apache.derby:derby 807 | com.mchange:mchange-commons-java 808 | org.apache.maven.resolver:maven-resolver-spi 809 | org.jetbrains.kotlin:kotlin-gradle-plugin-api 810 | com.typesafe.scala-logging:scala-logging_2.12 811 | com.fasterxml.jackson.module:jackson-module-afterburner 812 | org.jetbrains.kotlin:kotlin-annotation-processing-gradle 813 | io.micrometer:micrometer-registry-prometheus 814 | org.apache.hive:hive-metastore 815 | com.github.jknack:handlebars 816 | javax.cache:cache-api 817 | javax.mail:mailapi 818 | software.amazon.awssdk:annotations 819 | software.amazon.awssdk:http-client-spi 820 | com.nimbusds:oauth2-oidc-sdk 821 | com.jamesmurty.utils:java-xmlbuilder 822 | org.springframework.boot:spring-boot-starter-cache 823 | net.sf.jtidy:jtidy 824 | xml-resolver:xml-resolver 825 | org.apache.maven.resolver:maven-resolver-impl 826 | org.jetbrains.kotlin:kotlin-compiler-runner 827 | org.springframework.boot:spring-boot-starter-reactor-netty 828 | org.apache.hive:hive-exec 829 | org.jetbrains.kotlin:kotlin-daemon-client 830 | software.amazon.awssdk:utils 831 | org.apache.hive.shims:hive-shims-common 832 | org.jetbrains.kotlin:kotlin-build-common 833 | org.apache.lucene:lucene-memory 834 | org.attoparser:attoparser 835 | org.apache.maven:maven-resolver-provider 836 | org.springframework.cloud.task.app:spring-cloud-task-app-descriptor 837 | org.apache.maven.wagon:wagon-file 838 | org.apache.hadoop:hadoop-aws 839 | org.springframework.boot:spring-boot-starter-webflux 840 | com.github.mifmif:generex 841 | org.apache.hive.shims:hive-shims-0.23 842 | com.fasterxml.jackson.dataformat:jackson-dataformat-csv 843 | org.jetbrains.kotlin:kotlin-gradle-plugin-model 844 | com.amazonaws:aws-java-sdk-lambda 845 | org.sonatype.sisu.siesta:siesta-common 846 | io.lettuce:lettuce-core 847 | io.grpc:grpc-netty 848 | org.apache.lucene:lucene-suggest 849 | org.sonatype.sisu.siesta:siesta-client 850 | org.jetbrains.kotlin:kotlin-daemon-embeddable 851 | com.github.java-json-tools:json-schema-validator 852 | org.jetbrains.kotlin:kotlin-util-io 853 | com.github.java-json-tools:json-schema-core 854 | pl.project13.maven:git-commit-id-plugin 855 | org.parboiled:parboiled-java 856 | io.zipkin.zipkin2:zipkin 857 | software.amazon.awssdk:sdk-core 858 | com.google.cloud:google-cloud-core-grpc 859 | org.datanucleus:datanucleus-core 860 | io.zipkin.reporter2:zipkin-reporter 861 | com.amazonaws:aws-java-sdk-secretsmanager 862 | org.apache.tomcat:tomcat-juli 863 | org.abego.treelayout:org.abego.treelayout.core 864 | io.opencensus:opencensus-contrib-grpc-metrics 865 | software.amazon.awssdk:regions 866 | io.zipkin.brave:brave 867 | com.google.re2j:re2j 868 | com.amazonaws:aws-java-sdk-iam 869 | org.scala-sbt:util-scripted_2.12 870 | org.apache.maven.wagon:wagon-ssh 871 | software.amazon.awssdk:auth 872 | com.amazonaws:aws-java-sdk-rds 873 | javax.jdo:jdo-api 874 | com.google.cloud:google-cloud-storage 875 | org.apache.maven.plugin-tools:maven-plugin-tools-generators 876 | org.apache.tomcat:tomcat-annotations-api 877 | org.springframework.cloud:spring-cloud-netflix-ribbon 878 | com.fasterxml.jackson.module:jackson-module-scala_2.12 879 | org.apache.maven.doxia:doxia-module-xhtml5 880 | org.springframework.boot:spring-boot-starter-mail 881 | org.awaitility:awaitility 882 | com.amazonaws:aws-java-sdk-logs 883 | org.elasticsearch:elasticsearch 884 | io.opentracing:opentracing-api 885 | software.amazon.awssdk:aws-core 886 | org.eclipse.jdt.core.compiler:ecj 887 | org.springframework.data:spring-data-redis 888 | org.apache.velocity:velocity-engine-core 889 | org.apache.lucene:lucene-backward-codecs 890 | org.apache.lucene:lucene-misc 891 | org.apache.ws.xmlschema:xmlschema-core 892 | io.jsonwebtoken:jjwt-api 893 | xmlunit:xmlunit 894 | org.thymeleaf:thymeleaf-spring5 895 | org.apache.maven.doxia:doxia-module-markdown 896 | com.opencsv:opencsv 897 | com.auth0:java-jwt 898 | org.pegdown:pegdown 899 | software.amazon.awssdk:protocol-core 900 | org.apache.lucene:lucene-highlighter 901 | org.springframework.cloud:spring-cloud-netflix-archaius 902 | com.github.cb372:scalacache-core_2.12 903 | com.amazonaws:aws-java-sdk-route53 904 | com.amazonaws:aws-java-sdk-simpleworkflow 905 | org.scala-lang:scalap 906 | org.webjars:webjars-locator-core 907 | org.apache.hadoop:hadoop-yarn-server-web-proxy 908 | com.github.cb372:scalacache-caffeine_2.12 909 | org.apache.lucene:lucene-join 910 | org.testcontainers:testcontainers 911 | org.thymeleaf.extras:thymeleaf-extras-java8time 912 | org.codehaus.groovy:groovy-ant 913 | org.sonarsource.scanner.cli:sonar-scanner-cli 914 | org.mockito:mockito-all 915 | org.slf4j:slf4j-ext 916 | io.airlift:aircompressor 917 | cglib:cglib 918 | org.springframework.kafka:spring-kafka 919 | software.amazon.awssdk:profiles 920 | io.netty:netty-transport-native-kqueue 921 | org.ow2.asm:asm-debug-all 922 | software.amazon.awssdk:apache-client 923 | org.apache.lucene:lucene-grouping 924 | org.codehaus.groovy:groovy-groovydoc 925 | net.sourceforge.htmlunit:htmlunit 926 | io.cucumber:cucumber-core 927 | software.amazon.awssdk:netty-nio-client 928 | com.amazonaws:aws-java-sdk-elasticloadbalancing 929 | org.apache.bcel:bcel 930 | org.jetbrains.intellij.deps:trove4j 931 | org.apache.geronimo.specs:geronimo-jms_1.1_spec 932 | org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable 933 | org.apache.orc:orc-core 934 | org.datanucleus:datanucleus-api-jdo 935 | org.apache.kafka:kafka_2.11 936 | org.apache.cxf:cxf-core 937 | io.jsonwebtoken:jjwt-impl 938 | net.sourceforge.htmlunit:htmlunit-core-js 939 | org.eclipse.jetty.websocket:websocket-servlet 940 | org.jogamp.gluegen:gluegen-rt 941 | org.datanucleus:datanucleus-rdbms 942 | com.github.jnr:jnr-a64asm 943 | org.powermock:powermock-reflect 944 | org.json4s:json4s-scalap_2.12 945 | com.google.auto:auto-common 946 | com.amazonaws:aws-java-sdk-emr 947 | org.json4s:json4s-ast_2.12 948 | org.json4s:json4s-core_2.12 949 | org.jetbrains.kotlin:kotlin-maven-plugin 950 | org.apache.hive.shims:hive-shims-scheduler 951 | com.sun.xml.bind:jaxb-osgi 952 | org.fusesource.hawtbuf:hawtbuf-proto 953 | com.nimbusds:lang-tag 954 | org.jogamp.jogl:jogl-all 955 | com.jolbox:bonecp 956 | com.fasterxml.jackson.module:jackson-module-scala_2.11 957 | org.powermock:powermock-core 958 | com.typesafe.akka:akka-slf4j_2.12 959 | com.clearspring.analytics:stream 960 | org.jacoco:org.jacoco.ant 961 | org.apache.sling:org.apache.sling.javax.activation 962 | org.elasticsearch.client:elasticsearch-rest-client 963 | org.apache.thrift:libfb303 964 | com.google.auto.value:auto-value 965 | org.springframework.data:spring-data-keyvalue 966 | io.prometheus:simpleclient_pushgateway 967 | com.amazonaws:aws-java-sdk-cognitoidentity 968 | com.amazonaws:aws-java-sdk-elasticbeanstalk 969 | com.amazonaws:aws-java-sdk-xray 970 | org.hamcrest:hamcrest-all 971 | com.amazonaws:aws-java-sdk-cloudfront 972 | org.mybatis:mybatis 973 | org.apache.hadoop:hadoop-yarn-server-resourcemanager 974 | io.dropwizard.metrics:metrics-graphite 975 | org.jruby.jcodings:jcodings 976 | io.opentracing:opentracing-noop 977 | org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice 978 | org.typelevel:cats-kernel_2.12 979 | net.sourceforge.nekohtml:nekohtml 980 | org.jruby.joni:joni 981 | asm:asm-tree 982 | org.rnorth.duct-tape:duct-tape 983 | com.amazonaws:aws-java-sdk-ecs 984 | org.codehaus.mojo:flatten-maven-plugin 985 | com.mchange:c3p0 986 | args4j:args4j 987 | io.sentry:sentry 988 | com.typesafe.akka:akka-stream_2.12 989 | org.apache.lucene:lucene-spatial3d 990 | org.powermock:powermock-api-support 991 | com.amazonaws:aws-java-sdk-cloudwatchmetrics 992 | asm:asm-commons 993 | org.jetbrains.kotlin:kotlin-util-klib 994 | com.sun.xml.messaging.saaj:saaj-impl 995 | org.rnorth.visible-assertions:visible-assertions 996 | org.apache.cxf:cxf-rt-transports-http 997 | io.cucumber:tag-expressions 998 | com.sun.mail:jakarta.mail 999 | com.amazonaws:aws-java-sdk-elasticache 1000 | org.apache.ant:ant-junit -------------------------------------------------------------------------------- /doc/Top1000-2021.txt: -------------------------------------------------------------------------------- 1 | org.codehaus.plexus:plexus-utils 2 | org.slf4j:slf4j-api 3 | org.apache.maven:maven-model 4 | org.apache.maven:maven-plugin-api 5 | com.google.guava:guava 6 | org.apache.maven:maven-artifact 7 | junit:junit 8 | org.codehaus.plexus:plexus-interpolation 9 | commons-codec:commons-codec 10 | org.apache.maven:maven-repository-metadata 11 | org.apache.maven:maven-settings 12 | commons-io:commons-io 13 | org.ow2.asm:asm 14 | org.apache.maven:maven-core 15 | org.apache.commons:commons-lang3 16 | com.fasterxml.jackson.core:jackson-core 17 | org.apache.httpcomponents:httpcore 18 | org.apache.httpcomponents:httpclient 19 | com.fasterxml.jackson.core:jackson-databind 20 | com.google.code.findbugs:jsr305 21 | com.fasterxml.jackson.core:jackson-annotations 22 | org.apache.maven.shared:maven-shared-utils 23 | commons-logging:commons-logging 24 | org.codehaus.plexus:plexus-component-annotations 25 | com.google.errorprone:error_prone_annotations 26 | org.apache.maven:maven-artifact-manager 27 | org.apache.maven:maven-project 28 | org.apache.maven:maven-profile 29 | org.codehaus.plexus:plexus-classworlds 30 | org.apache.maven:maven-plugin-registry 31 | org.apache.commons:commons-compress 32 | org.apache.maven.reporting:maven-reporting-api 33 | org.codehaus.plexus:plexus-container-default 34 | commons-lang:commons-lang 35 | com.google.code.gson:gson 36 | org.apache.maven.doxia:doxia-sink-api 37 | org.apache.maven:maven-error-diagnostics 38 | org.apache.maven:maven-plugin-descriptor 39 | org.apache.maven:maven-plugin-parameter-documenter 40 | org.apache.maven:maven-monitor 41 | org.codehaus.plexus:plexus-archiver 42 | org.hamcrest:hamcrest-core 43 | com.google.protobuf:protobuf-java 44 | org.springframework:spring-core 45 | classworlds:classworlds 46 | org.springframework:spring-beans 47 | joda-time:joda-time 48 | org.checkerframework:checker-qual 49 | org.codehaus.plexus:plexus-io 50 | commons-collections:commons-collections 51 | org.apache.maven:maven-model-builder 52 | org.apache.maven:maven-settings-builder 53 | commons-cli:commons-cli 54 | org.yaml:snakeyaml 55 | org.apache.maven.wagon:wagon-provider-api 56 | org.springframework:spring-context 57 | org.springframework:spring-aop 58 | org.apache.maven:maven-aether-provider 59 | com.google.j2objc:j2objc-annotations 60 | org.junit.platform:junit-platform-commons 61 | org.ow2.asm:asm-tree 62 | org.apache.maven.shared:maven-common-artifact-filters 63 | org.slf4j:jcl-over-slf4j 64 | commons-beanutils:commons-beanutils 65 | mysql:mysql-connector-java 66 | org.springframework:spring-expression 67 | org.apache.maven:maven-toolchain 68 | net.bytebuddy:byte-buddy 69 | org.ow2.asm:asm-analysis 70 | org.sonatype.sisu:sisu-guice 71 | org.ow2.asm:asm-commons 72 | org.junit.jupiter:junit-jupiter-api 73 | org.apache.maven:maven-archiver 74 | org.junit.platform:junit-platform-engine 75 | org.objenesis:objenesis 76 | org.apache.maven.plugins:maven-compiler-plugin 77 | org.springframework:spring-web 78 | javax.inject:javax.inject 79 | org.codehaus.mojo:animal-sniffer-annotations 80 | org.sonatype.plexus:plexus-sec-dispatcher 81 | com.squareup.okio:okio 82 | org.apache.maven.plugins:maven-surefire-plugin 83 | org.apache.maven.shared:maven-filtering 84 | org.apache.logging.log4j:log4j-api 85 | org.springframework.boot:spring-boot-starter 86 | org.apache.maven.plugins:maven-resources-plugin 87 | com.fasterxml.jackson.datatype:jackson-datatype-jsr310 88 | javax.xml.bind:jaxb-api 89 | org.javassist:javassist 90 | com.thoughtworks.qdox:qdox 91 | org.jetbrains.kotlin:kotlin-stdlib 92 | org.apiguardian:apiguardian-api 93 | ch.qos.logback:logback-core 94 | net.java.dev.jna:jna 95 | xml-apis:xml-apis 96 | ch.qos.logback:logback-classic 97 | org.codehaus.plexus:plexus-compiler-api 98 | org.sonatype.plexus:plexus-build-api 99 | org.springframework.boot:spring-boot 100 | commons-digester:commons-digester 101 | org.jetbrains.kotlin:kotlin-stdlib-common 102 | org.springframework.boot:spring-boot-autoconfigure 103 | org.sonatype.plexus:plexus-cipher 104 | log4j:log4j 105 | com.squareup.okhttp3:okhttp 106 | io.netty:netty-common 107 | org.codehaus.plexus:plexus-compiler-javac 108 | org.codehaus.plexus:plexus-compiler-manager 109 | io.netty:netty-buffer 110 | org.mockito:mockito-core 111 | org.apache.maven.surefire:surefire-api 112 | org.apache.maven.surefire:surefire-booter 113 | org.junit.jupiter:junit-jupiter-engine 114 | org.apache.maven.surefire:maven-surefire-common 115 | org.sonatype.sisu:sisu-inject-bean 116 | net.bytebuddy:byte-buddy-agent 117 | com.google.guava:failureaccess 118 | io.netty:netty-transport 119 | org.sonatype.aether:aether-api 120 | org.springframework:spring-webmvc 121 | org.bouncycastle:bcprov-jdk15on 122 | org.sonatype.sisu:sisu-inject-plexus 123 | org.tukaani:xz 124 | com.fasterxml.jackson.datatype:jackson-datatype-jdk8 125 | org.eclipse.sisu:org.eclipse.sisu.inject 126 | org.codehaus.plexus:plexus-interactivity-api 127 | io.netty:netty-codec 128 | org.eclipse.sisu:org.eclipse.sisu.plexus 129 | org.sonatype.aether:aether-util 130 | org.apache.maven.plugins:maven-jar-plugin 131 | org.slf4j:jul-to-slf4j 132 | com.google.guava:listenablefuture 133 | aopalliance:aopalliance 134 | org.opentest4j:opentest4j 135 | org.apache.maven.plugin-tools:maven-plugin-annotations 136 | org.sonatype.aether:aether-spi 137 | org.sonatype.aether:aether-impl 138 | org.apache.velocity:velocity 139 | org.scala-lang:scala-library 140 | io.netty:netty-handler 141 | org.apache.maven.doxia:doxia-logging-api 142 | org.codehaus.plexus:plexus-java 143 | xerces:xercesImpl 144 | org.apache.maven.doxia:doxia-core 145 | javax.annotation:javax.annotation-api 146 | org.ow2.asm:asm-util 147 | org.springframework.boot:spring-boot-starter-logging 148 | org.apache.maven.doxia:doxia-site-renderer 149 | io.netty:netty-resolver 150 | org.apache.maven.doxia:doxia-decoration-model 151 | org.springframework:spring-jcl 152 | org.apache.maven.doxia:doxia-module-xhtml 153 | jakarta.xml.bind:jakarta.xml.bind-api 154 | org.apache.maven.shared:maven-shared-incremental 155 | org.springframework:spring-tx 156 | net.minidev:json-smart 157 | org.reactivestreams:reactive-streams 158 | commons-validator:commons-validator 159 | org.apache.maven.plugins:maven-clean-plugin 160 | antlr:antlr 161 | org.jboss.logging:jboss-logging 162 | org.springframework.boot:spring-boot-starter-web 163 | org.junit.jupiter:junit-jupiter-params 164 | jakarta.activation:jakarta.activation-api 165 | org.jetbrains.kotlin:kotlin-stdlib-jdk7 166 | org.scala-lang:scala-reflect 167 | org.eclipse.aether:aether-util 168 | org.json:json 169 | org.assertj:assertj-core 170 | org.springframework.boot:spring-boot-starter-json 171 | org.bouncycastle:bcpkix-jdk15on 172 | org.springframework:spring-test 173 | org.jetbrains.kotlin:kotlin-stdlib-jdk8 174 | net.minidev:accessors-smart 175 | org.apache.maven.shared:maven-dependency-tree 176 | org.codehaus.plexus:plexus-velocity 177 | io.netty:netty-codec-http 178 | javax.activation:activation 179 | net.java.dev.jna:jna-platform 180 | org.apache.maven.shared:maven-artifact-transfer 181 | org.springframework.boot:spring-boot-test 182 | org.apache.maven.shared:file-management 183 | org.springframework.boot:spring-boot-starter-tomcat 184 | org.checkerframework:checker-compat-qual 185 | org.xerial.snappy:snappy-java 186 | com.google.inject:guice 187 | io.grpc:grpc-context 188 | org.apache.maven.shared:maven-shared-io 189 | com.fasterxml:classmate 190 | org.apache.httpcomponents:httpmime 191 | org.apache.maven.doxia:doxia-module-fml 192 | com.google.auto.value:auto-value-annotations 193 | com.sun.istack:istack-commons-runtime 194 | org.jetbrains.kotlin:kotlin-reflect 195 | org.junit:junit-bom 196 | oro:oro 197 | org.springframework.boot:spring-boot-test-autoconfigure 198 | org.apache.maven.plugins:maven-install-plugin 199 | org.springframework.boot:spring-boot-starter-test 200 | com.fasterxml.jackson.dataformat:jackson-dataformat-cbor 201 | org.glassfish.jaxb:jaxb-runtime 202 | org.glassfish.jaxb:txw2 203 | com.fasterxml.jackson.module:jackson-module-jaxb-annotations 204 | javax.validation:validation-api 205 | com.fasterxml.jackson.module:jackson-module-parameter-names 206 | org.antlr:antlr4-runtime 207 | com.amazonaws:aws-java-sdk-core 208 | com.jcraft:jsch 209 | org.projectlombok:lombok 210 | org.codehaus.plexus:plexus-i18n 211 | org.apache.ant:ant 212 | org.junit.jupiter:junit-jupiter 213 | javax.annotation:jsr250-api 214 | backport-util-concurrent:backport-util-concurrent 215 | org.apache.tomcat.embed:tomcat-embed-core 216 | org.apache.maven.reporting:maven-reporting-impl 217 | org.jetbrains:annotations 218 | org.springframework:spring-jdbc 219 | com.amazonaws:jmespath-java 220 | org.apache.ant:ant-launcher 221 | jline:jline 222 | com.jayway.jsonpath:json-path 223 | org.apache.logging.log4j:log4j-core 224 | javax.enterprise:cdi-api 225 | jakarta.annotation:jakarta.annotation-api 226 | org.apache.tomcat.embed:tomcat-embed-websocket 227 | javax.servlet:javax.servlet-api 228 | com.fasterxml.jackson.dataformat:jackson-dataformat-yaml 229 | org.aspectj:aspectjweaver 230 | org.slf4j:slf4j-jdk14 231 | org.apache.maven.surefire:surefire-logger-api 232 | com.google.api.grpc:proto-google-common-protos 233 | org.apache.maven:maven-compat 234 | org.hdrhistogram:HdrHistogram 235 | com.zaxxer:HikariCP 236 | org.hamcrest:hamcrest 237 | org.codehaus.jackson:jackson-core-asl 238 | io.grpc:grpc-stub 239 | org.eclipse.jetty:jetty-util 240 | org.apache.commons:commons-math3 241 | com.google.protobuf:protobuf-java-util 242 | org.apache.logging.log4j:log4j-to-slf4j 243 | org.springframework.boot:spring-boot-starter-aop 244 | org.scala-lang:scala-compiler 245 | asm:asm 246 | io.grpc:grpc-protobuf 247 | io.grpc:grpc-protobuf-lite 248 | io.grpc:grpc-api 249 | io.projectreactor:reactor-core 250 | com.sun.xml.bind:jaxb-impl 251 | org.codehaus.jackson:jackson-mapper-asl 252 | org.eclipse.jetty:jetty-io 253 | net.sf.jopt-simple:jopt-simple 254 | com.thoughtworks.paranamer:paranamer 255 | org.xmlunit:xmlunit-core 256 | org.jdom:jdom2 257 | com.typesafe:config 258 | io.netty:netty-transport-native-epoll 259 | com.beust:jcommander 260 | commons-httpclient:commons-httpclient 261 | com.github.ben-manes.caffeine:caffeine 262 | org.iq80.snappy:snappy 263 | javax.activation:javax.activation-api 264 | io.netty:netty-codec-http2 265 | org.eclipse.jetty:jetty-http 266 | org.slf4j:slf4j-log4j12 267 | org.junit.platform:junit-platform-launcher 268 | org.apache.maven:apache-maven 269 | org.springframework.boot:spring-boot-starter-jdbc 270 | com.thoughtworks.xstream:xstream 271 | org.jetbrains.kotlinx:kotlinx-coroutines-core 272 | org.springframework.boot:spring-boot-actuator 273 | org.hibernate.validator:hibernate-validator 274 | org.eclipse.aether:aether-api 275 | org.apache.commons:commons-text 276 | org.springframework.data:spring-data-commons 277 | org.springframework.boot:spring-boot-loader-tools 278 | org.apache.xbean:xbean-reflect 279 | org.springframework.boot:spring-boot-starter-actuator 280 | io.netty:netty-codec-socks 281 | com.amazonaws:aws-java-sdk-s3 282 | io.netty:netty-handler-proxy 283 | org.scala-lang.modules:scala-xml_2.12 284 | org.skyscreamer:jsonassert 285 | org.apache.commons:commons-exec 286 | org.jvnet.staxex:stax-ex 287 | io.netty:netty-transport-native-unix-common 288 | com.amazonaws:aws-java-sdk-kms 289 | org.apache.maven.plugins:maven-deploy-plugin 290 | org.eclipse.aether:aether-spi 291 | org.eclipse.aether:aether-impl 292 | org.apache.commons:commons-collections4 293 | org.springframework.boot:spring-boot-actuator-autoconfigure 294 | org.postgresql:postgresql 295 | org.jsoup:jsoup 296 | org.mockito:mockito-junit-jupiter 297 | commons-net:commons-net 298 | com.google.http-client:google-http-client 299 | org.codehaus.groovy:groovy 300 | com.sun.jersey:jersey-core 301 | io.grpc:grpc-core 302 | org.codehaus.woodstox:stax2-api 303 | org.jacoco:org.jacoco.agent 304 | org.apache.zookeeper:zookeeper 305 | dom4j:dom4j 306 | io.dropwizard.metrics:metrics-core 307 | org.dom4j:dom4j 308 | org.apache.maven.plugins:maven-site-plugin 309 | io.swagger:swagger-annotations 310 | org.springframework:spring-orm 311 | org.hibernate:hibernate-core 312 | io.micrometer:micrometer-core 313 | io.opencensus:opencensus-api 314 | org.apache.avro:avro 315 | com.google.collections:google-collections 316 | jakarta.validation:jakarta.validation-api 317 | org.eclipse.jetty:jetty-server 318 | com.sun.xml.fastinfoset:FastInfoset 319 | io.netty:netty 320 | com.vaadin.external.google:android-json 321 | org.apache.maven.plugins:maven-assembly-plugin 322 | software.amazon.ion:ion-java 323 | org.apache.maven.plugins:maven-dependency-plugin 324 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider 325 | com.fasterxml.jackson.jaxrs:jackson-jaxrs-base 326 | org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm 327 | org.antlr:antlr-runtime 328 | org.springframework.boot:spring-boot-starter-validation 329 | com.googlecode.json-simple:json-simple 330 | javax.servlet:servlet-api 331 | commons-configuration:commons-configuration 332 | org.hamcrest:hamcrest-library 333 | org.codehaus.jettison:jettison 334 | org.springframework.boot:spring-boot-maven-plugin 335 | org.springframework.security:spring-security-core 336 | org.springframework:spring-aspects 337 | com.sun.activation:jakarta.activation 338 | org.springframework:spring-context-support 339 | org.lz4:lz4-java 340 | org.apache.kafka:kafka-clients 341 | org.jboss:jandex 342 | org.springframework.boot:spring-boot-starter-data-jpa 343 | com.github.jnr:jffi 344 | commons-logging:commons-logging-api 345 | org.hibernate.common:hibernate-commons-annotations 346 | org.apache.tomcat.embed:tomcat-embed-el 347 | org.latencyutils:LatencyUtils 348 | com.google.auth:google-auth-library-credentials 349 | org.apache.logging.log4j:log4j-slf4j-impl 350 | org.eclipse.jetty:jetty-servlet 351 | com.fasterxml.woodstox:woodstox-core 352 | io.netty:netty-all 353 | org.eclipse.jetty:jetty-security 354 | org.jacoco:org.jacoco.core 355 | org.springframework.security:spring-security-web 356 | com.google.api:api-common 357 | stax:stax-api 358 | org.apache.felix:maven-bundle-plugin 359 | xmlpull:xmlpull 360 | com.google.auth:google-auth-library-oauth2-http 361 | xpp3:xpp3_min 362 | org.jacoco:org.jacoco.report 363 | com.nimbusds:nimbus-jose-jwt 364 | com.sun.jersey:jersey-client 365 | org.apache.maven.plugins:maven-antrun-plugin 366 | org.springframework.security:spring-security-config 367 | io.swagger:swagger-models 368 | org.glassfish.jersey.core:jersey-common 369 | org.codehaus.groovy:groovy-xml 370 | com.google.http-client:google-http-client-jackson2 371 | commons-chain:commons-chain 372 | org.springframework.data:spring-data-jpa 373 | org.apache.commons:commons-pool2 374 | org.eclipse.jetty:jetty-xml 375 | org.mortbay.jetty:jetty-util 376 | com.github.luben:zstd-jni 377 | com.googlecode.javaewah:JavaEWAH 378 | com.ibm.icu:icu4j 379 | org.apache.hadoop:hadoop-common 380 | org.apache.maven:maven-builder-support 381 | org.eclipse.jgit:org.eclipse.jgit 382 | org.springframework.boot:spring-boot-starter-security 383 | com.google.android:annotations 384 | javax.ws.rs:javax.ws.rs-api 385 | org.codehaus.jackson:jackson-jaxrs 386 | com.squareup:javapoet 387 | org.apache.velocity:velocity-tools 388 | org.codehaus.jackson:jackson-xc 389 | org.apache.hadoop:hadoop-annotations 390 | org.reflections:reflections 391 | org.apache.maven.plugins:maven-shade-plugin 392 | org.threeten:threetenbp 393 | it.unimi.dsi:fastutil 394 | io.opencensus:opencensus-contrib-http-util 395 | org.slf4j:slf4j-simple 396 | org.glassfish.jersey.core:jersey-client 397 | io.perfmark:perfmark-api 398 | org.apache.hadoop:hadoop-auth 399 | org.fusesource.jansi:jansi 400 | org.springframework:spring-messaging 401 | org.scala-lang.modules:scala-parser-combinators_2.12 402 | com.google.api.grpc:proto-google-iam-v1 403 | info.picocli:picocli 404 | javax.xml.stream:stax-api 405 | org.apache.maven.doxia:doxia-module-apt 406 | org.apache.maven.doxia:doxia-module-xdoc 407 | org.glassfish:jakarta.el 408 | sslext:sslext 409 | org.codehaus.groovy:groovy-json 410 | com.github.stephenc.jcip:jcip-annotations 411 | org.apache.struts:struts-core 412 | org.apache.struts:struts-taglib 413 | org.apache.struts:struts-tiles 414 | org.glassfish.hk2:osgi-resource-locator 415 | org.glassfish.hk2:hk2-api 416 | org.eclipse.jetty:jetty-webapp 417 | org.glassfish.hk2:hk2-locator 418 | org.eclipse.jetty:jetty-client 419 | org.glassfish.hk2:hk2-utils 420 | io.grpc:grpc-netty-shaded 421 | org.antlr:ST4 422 | com.google.api:gax 423 | org.springframework.boot:spring-boot-buildpack-platform 424 | com.h2database:h2 425 | org.apache.maven.surefire:common-java5 426 | org.vafer:jdependency 427 | org.springframework.security:spring-security-crypto 428 | org.jetbrains.kotlin:kotlin-script-runtime 429 | com.sun.jersey:jersey-json 430 | org.mozilla:rhino 431 | org.mortbay.jetty:jetty 432 | com.squareup.okhttp3:logging-interceptor 433 | com.sun.jersey:jersey-server 434 | org.jetbrains.kotlin:kotlin-compiler-embeddable 435 | commons-beanutils:commons-beanutils-core 436 | org.glassfish.hk2.external:aopalliance-repackaged 437 | org.apache.commons:commons-csv 438 | org.springframework.plugin:spring-plugin-core 439 | org.antlr:antlr4 440 | org.jacoco:jacoco-maven-plugin 441 | org.apache.maven.shared:maven-invoker 442 | com.google.api-client:google-api-client 443 | com.squareup:javawriter 444 | org.codehaus.groovy:groovy-all 445 | org.apache.poi:poi 446 | org.scala-sbt:util-interface 447 | javax.ws.rs:jsr311-api 448 | com.google.oauth-client:google-oauth-client 449 | org.spark-project.spark:unused 450 | org.apache.curator:curator-framework 451 | org.jetbrains.kotlin:kotlin-scripting-common 452 | org.jetbrains.kotlin:kotlin-scripting-jvm 453 | io.grpc:grpc-auth 454 | org.apache.httpcomponents:httpcore-nio 455 | org.apache.curator:curator-client 456 | org.apache.hbase:hbase-client 457 | org.apache.ivy:ivy 458 | javax.servlet.jsp:jsp-api 459 | org.scala-sbt:compiler-bridge_2.12 460 | org.jetbrains.kotlinx:kotlinx-coroutines-android 461 | org.jetbrains.kotlin:kotlin-daemon-embeddable 462 | com.google.api:gax-grpc 463 | org.apache.maven.shared:maven-dependency-analyzer 464 | commons-pool:commons-pool 465 | jakarta.transaction:jakarta.transaction-api 466 | com.sun.activation:javax.activation 467 | com.amazonaws:aws-java-sdk-sts 468 | org.apache.poi:poi-ooxml 469 | org.codehaus.plexus:plexus-digest 470 | org.seleniumhq.selenium:selenium-api 471 | org.apache.curator:curator-recipes 472 | org.asynchttpclient:async-http-client 473 | org.seleniumhq.selenium:selenium-remote-driver 474 | org.apache.thrift:libthrift 475 | org.apache.hadoop:hadoop-yarn-common 476 | org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable 477 | io.github.classgraph:classgraph 478 | io.springfox:springfox-spi 479 | org.mapstruct:mapstruct 480 | com.lmax:disruptor 481 | org.apache.xmlbeans:xmlbeans 482 | org.junit.vintage:junit-vintage-engine 483 | org.apache.hadoop:hadoop-yarn-api 484 | org.jetbrains.kotlin:kotlin-gradle-plugin-api 485 | org.jetbrains.kotlin:kotlin-util-io 486 | org.jetbrains.kotlin:kotlin-gradle-plugin 487 | org.jetbrains.kotlin:kotlin-daemon-client 488 | com.fasterxml.jackson.module:jackson-module-paranamer 489 | com.googlecode.libphonenumber:libphonenumber 490 | org.apache.maven.doxia:doxia-integration-tools 491 | org.testng:testng 492 | org.codehaus.mojo:exec-maven-plugin 493 | org.apache.lucene:lucene-core 494 | org.jetbrains.kotlin:kotlin-android-extensions 495 | org.jetbrains.kotlin:kotlin-compiler-runner 496 | org.jetbrains.kotlin:kotlin-annotation-processing-gradle 497 | org.freemarker:freemarker 498 | org.jetbrains.kotlin:kotlin-gradle-plugin-model 499 | commons-fileupload:commons-fileupload 500 | org.jetbrains.kotlin:kotlin-build-common 501 | org.apache.httpcomponents:httpasyncclient 502 | net.sf.saxon:Saxon-HE 503 | org.glassfish.jersey.core:jersey-server 504 | jakarta.persistence:jakarta.persistence-api 505 | org.apache.maven.surefire:surefire-junit4 506 | io.netty:netty-resolver-dns 507 | org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable 508 | com.sun.mail:javax.mail 509 | org.springframework.plugin:spring-plugin-metadata 510 | io.swagger.core.v3:swagger-annotations 511 | org.codehaus.janino:commons-compiler 512 | com.github.spotbugs:spotbugs-annotations 513 | org.ccil.cowan.tagsoup:tagsoup 514 | org.springframework.boot:spring-boot-configuration-processor 515 | io.grpc:grpc-grpclb 516 | org.robolectric:android-all 517 | io.springfox:springfox-spring-web 518 | io.grpc:grpc-alts 519 | org.codehaus.janino:janino 520 | org.apache.hadoop:hadoop-mapreduce-client-core 521 | org.springframework.boot:spring-boot-devtools 522 | io.netty:netty-codec-dns 523 | com.fasterxml.jackson.dataformat:jackson-dataformat-xml 524 | com.google.dagger:dagger 525 | io.springfox:springfox-schema 526 | org.apache.maven.resolver:maven-resolver-api 527 | org.slf4j:log4j-over-slf4j 528 | org.scala-lang.modules:scala-xml_2.11 529 | io.springfox:springfox-core 530 | org.springframework.retry:spring-retry 531 | com.amazonaws:aws-java-sdk-dynamodb 532 | net.sf.opencsv:opencsv 533 | org.seleniumhq.selenium:selenium-support 534 | org.apache.maven.doxia:doxia-skin-model 535 | com.amazonaws:aws-java-sdk-sqs 536 | org.apache.maven.plugins:maven-enforcer-plugin 537 | com.maxmind.geoip2:geoip2 538 | net.jcip:jcip-annotations 539 | org.scala-lang.modules:scala-parser-combinators_2.11 540 | net.logstash.logback:logstash-logback-encoder 541 | org.glassfish:javax.json 542 | org.apache.maven.resolver:maven-resolver-util 543 | org.apache.hadoop:hadoop-hdfs 544 | org.apache.yetus:audience-annotations 545 | org.seleniumhq.selenium:selenium-firefox-driver 546 | org.apache.lucene:lucene-analyzers-common 547 | com.google.cloud:google-cloud-core 548 | org.glassfish.jersey.containers:jersey-container-servlet-core 549 | io.prometheus:simpleclient 550 | io.dropwizard.metrics:metrics-jvm 551 | org.seleniumhq.selenium:selenium-chrome-driver 552 | org.jetbrains.kotlin:kotlin-util-klib 553 | org.apache.maven.surefire:surefire-grouper 554 | biz.aQute.bnd:biz.aQute.bndlib 555 | io.springfox:springfox-swagger2 556 | io.springfox:springfox-swagger-common 557 | org.apache.directory.api:api-util 558 | com.carrotsearch:hppc 559 | org.apache.directory.server:apacheds-i18n 560 | io.swagger.core.v3:swagger-models 561 | org.scala-sbt:compiler-interface 562 | com.fasterxml.jackson.module:jackson-module-kotlin 563 | org.glassfish.jersey.media:jersey-media-jaxb 564 | org.apache.hbase:hbase-server 565 | org.apache.directory.api:api-asn1-api 566 | xmlenc:xmlenc 567 | org.apache.maven.plugins:maven-failsafe-plugin 568 | com.github.jnr:jnr-constants 569 | org.codehaus.mojo:build-helper-maven-plugin 570 | org.apache.directory.server:apacheds-kerberos-codec 571 | org.beanshell:bsh 572 | org.springframework.integration:spring-integration-bom 573 | org.apache.maven.plugins:maven-release-plugin 574 | org.apache.hadoop:hadoop-yarn-client 575 | org.apache.hadoop:hadoop-mapreduce-client-jobclient 576 | org.apache.lucene:lucene-queryparser 577 | javax.mail:mail 578 | org.conscrypt:conscrypt-openjdk-uber 579 | io.prometheus:simpleclient_common 580 | org.springframework.cloud:spring-cloud-commons 581 | com.squareup.retrofit2:retrofit 582 | org.fusesource.leveldbjni:leveldbjni-all 583 | org.apache.maven.surefire:surefire-junit-platform 584 | com.puppycrawl.tools:checkstyle 585 | org.springframework.cloud:spring-cloud-context 586 | com.googlecode.juniversalchardet:juniversalchardet 587 | org.apache.hadoop:hadoop-yarn-server-common 588 | org.eclipse.jetty.websocket:websocket-api 589 | org.seleniumhq.selenium:selenium-ie-driver 590 | org.seleniumhq.selenium:selenium-java 591 | org.apache.lucene:lucene-queries 592 | org.springframework:spring-framework-bom 593 | org.apache.hadoop:hadoop-mapreduce-client-common 594 | org.eclipse.jetty.websocket:websocket-common 595 | com.jcraft:jzlib 596 | org.jetbrains.intellij.deps:trove4j 597 | org.eclipse.jetty.websocket:websocket-client 598 | org.apache.poi:poi-ooxml-schemas 599 | org.seleniumhq.selenium:selenium-safari-driver 600 | com.fasterxml.jackson.dataformat:jackson-dataformat-smile 601 | com.github.jnr:jnr-posix 602 | org.apache.htrace:htrace-core 603 | com.github.virtuald:curvesapi 604 | org.apache.hadoop:hadoop-client 605 | org.scala-lang.modules:scala-collection-compat_2.12 606 | com.typesafe:ssl-config-core_2.12 607 | xalan:xalan 608 | com.fasterxml.jackson.datatype:jackson-datatype-joda 609 | org.aspectj:aspectjrt 610 | com.github.jnr:jnr-ffi 611 | de.undercouch:gradle-download-task 612 | org.seleniumhq.selenium:selenium-edge-driver 613 | org.springframework.boot:spring-boot-gradle-plugin 614 | org.codehaus.plexus:plexus-resources 615 | com.squareup.okhttp:okhttp 616 | org.glassfish.jersey.containers:jersey-container-servlet 617 | org.apache.lucene:lucene-sandbox 618 | org.osgi:org.osgi.core 619 | com.squareup.okhttp3:okhttp-urlconnection 620 | org.eclipse.jetty:jetty-continuation 621 | javax.transaction:jta 622 | org.springframework:spring-oxm 623 | net.sf.kxml:kxml2 624 | org.springframework.cloud:spring-cloud-starter 625 | org.apache.maven.plugins:maven-war-plugin 626 | com.google.flatbuffers:flatbuffers-java 627 | org.jdom:jdom 628 | software.amazon.awssdk:http-client-spi 629 | software.amazon.awssdk:annotations 630 | io.springfox:springfox-swagger-ui 631 | com.google.inject.extensions:guice-servlet 632 | software.amazon.awssdk:utils 633 | org.apache.hbase.connectors.spark:hbase-spark 634 | org.glassfish.hk2.external:javax.inject 635 | io.reactivex.rxjava2:rxjava 636 | io.dropwizard.metrics:metrics-json 637 | org.seleniumhq.selenium:selenium-opera-driver 638 | com.amazonaws:aws-java-sdk-sns 639 | com.sun.xml.bind:jaxb-core 640 | io.rest-assured:rest-assured 641 | commons-dbcp:commons-dbcp 642 | io.rest-assured:json-path 643 | io.rest-assured:rest-assured-common 644 | jakarta.ws.rs:jakarta.ws.rs-api 645 | org.apache.derby:derby 646 | org.springframework:spring-webflux 647 | com.amazonaws:aws-java-sdk-ec2 648 | org.flywaydb:flyway-core 649 | io.netty:netty-tcnative-boringssl-static 650 | io.reactivex:rxjava 651 | com.google.http-client:google-http-client-gson 652 | io.rest-assured:xml-path 653 | org.apache.hadoop:hadoop-mapreduce-client-shuffle 654 | com.fasterxml.jackson.datatype:jackson-datatype-guava 655 | io.grpc:grpc-netty 656 | org.scala-lang.modules:scala-java8-compat_2.12 657 | com.microsoft.sqlserver:mssql-jdbc 658 | software.amazon.awssdk:sdk-core 659 | org.apache.maven.plugins:maven-source-plugin 660 | org.apache.maven.surefire:surefire-extensions-api 661 | com.github.jnr:jnr-x86asm 662 | org.apache.hive:hive-common 663 | com.github.spullara.mustache.java:compiler 664 | org.apache.hadoop:hadoop-mapreduce-client-app 665 | org.apache.hive:hive-shims 666 | software.amazon.awssdk:regions 667 | com.amazonaws:aws-java-sdk 668 | org.scala-sbt:launcher-interface 669 | org.apache.hive:hive-serde 670 | org.springframework.security:spring-security-rsa 671 | org.apache.pdfbox:fontbox 672 | software.amazon.awssdk:auth 673 | com.google.inject.extensions:guice-assistedinject 674 | org.apache.hive:hive-exec 675 | com.google.crypto.tink:tink 676 | org.apache.hive:hive-metastore 677 | com.typesafe.netty:netty-reactive-streams 678 | org.scala-sbt:zinc-core_2.12 679 | org.scala-sbt:zinc-apiinfo_2.12 680 | org.scala-sbt:zinc-classpath_2.12 681 | org.scala-sbt:zinc-classfile_2.12 682 | org.scala-sbt:zinc-compile-core_2.12 683 | org.scala-sbt:zinc-persist_2.12 684 | com.sun.jersey.contribs:jersey-guice 685 | org.scala-sbt:zinc_2.12 686 | org.scala-sbt:util-logging_2.12 687 | org.scala-sbt:util-relation_2.12 688 | com.google.jimfs:jimfs 689 | javax.jdo:jdo-api 690 | org.scala-sbt:util-control_2.12 691 | com.univocity:univocity-parsers 692 | org.apache.pdfbox:pdfbox 693 | org.scala-sbt:io_2.12 694 | org.datanucleus:datanucleus-core 695 | org.apache.hive.shims:hive-shims-common 696 | org.scalactic:scalactic_2.12 697 | org.scala-sbt:test-interface 698 | org.antlr:stringtemplate 699 | com.esotericsoftware:minlog 700 | org.apache.hive.shims:hive-shims-0.23 701 | software.amazon.awssdk:profiles 702 | xalan:serializer 703 | com.amazonaws:aws-java-sdk-kinesis 704 | software.amazon.awssdk:aws-core 705 | org.mongodb:bson 706 | org.apache.maven.reporting:maven-reporting-exec 707 | io.qameta.allure:allure-commandline 708 | org.datanucleus:datanucleus-api-jdo 709 | org.eclipse.jetty:jetty-servlets 710 | io.jsonwebtoken:jjwt 711 | org.unbescape:unbescape 712 | org.datanucleus:datanucleus-rdbms 713 | software.amazon.awssdk:protocol-core 714 | io.swagger.core.v3:swagger-core 715 | com.google.code.findbugs:annotations 716 | org.apache.maven.plugins:maven-checkstyle-plugin 717 | org.sonatype.plugins:nexus-staging-maven-plugin 718 | redis.clients:jedis 719 | org.glassfish.jersey.inject:jersey-hk2 720 | org.apache.thrift:libfb303 721 | com.google.cloud:google-cloud-core-http 722 | com.amazonaws:aws-java-sdk-cloudwatch 723 | net.java.dev.jets3t:jets3t 724 | org.easymock:easymock 725 | com.google.http-client:google-http-client-appengine 726 | org.glassfish.hk2.external:jakarta.inject 727 | org.springframework.boot:spring-boot-starter-thymeleaf 728 | com.github.jnr:jnr-unixsocket 729 | org.tensorflow:tensorflow-lite-metadata 730 | org.scala-sbt:collections_2.12 731 | org.scala-sbt:core-macros_2.12 732 | com.github.jnr:jnr-enxio 733 | org.sonatype.nexus.maven:nexus-common 734 | com.google.auto:auto-common 735 | com.google.api:gax-httpjson 736 | org.jodd:jodd-core 737 | org.mortbay.jetty:servlet-api 738 | com.typesafe.akka:akka-actor_2.12 739 | org.scala-sbt:test-agent 740 | com.fasterxml.jackson.dataformat:jackson-dataformat-csv 741 | com.jolbox:bonecp 742 | org.eclipse.jetty:jetty-util-ajax 743 | software.amazon.awssdk:apache-client 744 | software.amazon.awssdk:netty-nio-client 745 | org.scala-sbt:main_2.12 746 | org.scala-sbt:command_2.12 747 | org.scala-sbt:main-settings_2.12 748 | org.scala-sbt:sbt 749 | org.scala-sbt:actions_2.12 750 | org.scala-sbt:logic_2.12 751 | org.scala-sbt:run_2.12 752 | org.scala-sbt:completion_2.12 753 | org.scala-sbt:tasks_2.12 754 | org.scala-sbt:task-system_2.12 755 | org.scala-sbt:protocol_2.12 756 | org.scala-sbt:testing_2.12 757 | com.intellij:annotations 758 | com.lihaoyi:sourcecode_2.12 759 | org.scala-sbt:util-position_2.12 760 | org.springframework.boot:spring-boot-starter-reactor-netty 761 | org.apache.hadoop:hadoop-yarn-server-web-proxy 762 | com.github.gundy:semver4j 763 | com.nimbusds:oauth2-oidc-sdk 764 | org.mongodb:mongodb-driver-core 765 | com.eed3si9n:sjson-new-scalajson_2.12 766 | org.scala-sbt:scripted-plugin_2.12 767 | jaxen:jaxen 768 | com.eed3si9n:sjson-new-core_2.12 769 | org.scala-sbt:librarymanagement-core_2.12 770 | org.springframework.boot:spring-boot-starter-webflux 771 | org.apache.hive.shims:hive-shims-scheduler 772 | org.scala-sbt:util-cache_2.12 773 | org.apache.maven.scm:maven-scm-api 774 | org.glassfish.jersey.bundles.repackaged:jersey-guava 775 | org.scala-sbt:librarymanagement-ivy_2.12 776 | org.apache.maven.shared:maven-doxia-tools 777 | io.airlift:aircompressor 778 | com.jamesmurty.utils:java-xmlbuilder 779 | org.apache.maven.enforcer:enforcer-api 780 | io.swagger:swagger-core 781 | javax.persistence:javax.persistence-api 782 | org.apache.maven.enforcer:enforcer-rules 783 | org.scala-sbt:sbinary_2.12 784 | org.scala-sbt:zinc-compile_2.12 785 | io.spring.gradle:dependency-management-plugin 786 | org.apache.orc:orc-core 787 | org.scala-sbt:util-tracking_2.12 788 | io.zipkin.zipkin2:zipkin 789 | io.zipkin.reporter2:zipkin-reporter 790 | com.swoval:file-tree-views 791 | com.sun.jersey.contribs:jersey-apache-client4 792 | com.google.http-client:google-http-client-apache-v2 793 | net.snowflake:snowflake-jdbc 794 | org.scala-sbt.ivy:ivy 795 | org.apache.hadoop:hadoop-yarn-server-resourcemanager 796 | org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice 797 | org.apache.maven.resolver:maven-resolver-spi 798 | org.apache.maven.plugins:maven-javadoc-plugin 799 | org.apache.tika:tika-core 800 | org.thymeleaf:thymeleaf 801 | com.tdunning:t-digest 802 | org.springframework.security:spring-security-test 803 | org.jvnet.mimepull:mimepull 804 | org.hibernate:hibernate-validator 805 | org.apache.maven.resolver:maven-resolver-impl 806 | org.apache.maven.scm:maven-scm-manager-plexus 807 | org.apache.maven.scm:maven-scm-provider-gitexe 808 | org.apache.maven.scm:maven-scm-provider-git-commons 809 | com.google.re2j:re2j 810 | io.micrometer:micrometer-registry-prometheus 811 | io.opencensus:opencensus-contrib-grpc-metrics 812 | io.zipkin.brave:brave 813 | org.testcontainers:testcontainers 814 | com.amazonaws:aws-java-sdk-ses 815 | org.apache.maven.surefire:common-junit3 816 | io.projectreactor.netty:reactor-netty 817 | com.amazonaws:aws-java-sdk-secretsmanager 818 | org.scala-sbt.ipcsocket:ipcsocket 819 | com.sap.cloud.db.jdbc:ngdbc 820 | org.springframework.boot:spring-boot-starter-cache 821 | org.apache.maven.surefire:common-junit4 822 | com.github.java-json-tools:json-schema-validator 823 | org.apache.maven:maven-resolver-provider 824 | dk.brics.automaton:automaton 825 | com.github.java-json-tools:json-schema-core 826 | org.scala-sbt:zinc-lm-integration_2.12 827 | org.jetbrains.kotlin:kotlin-native-utils 828 | com.mchange:mchange-commons-java 829 | io.opentracing:opentracing-api 830 | org.codehaus.groovy:groovy-templates 831 | org.sonarsource.scanner.api:sonar-scanner-api 832 | com.amazonaws:aws-java-sdk-lambda 833 | org.fusesource.hawtbuf:hawtbuf 834 | org.apache.hadoop:hadoop-aws 835 | com.lihaoyi:fastparse_2.12 836 | com.github.jknack:handlebars 837 | org.sonatype.nexus.plugins:nexus-restlet1x-model 838 | org.apache.maven.plugins:maven-help-plugin 839 | org.glassfish.jersey.ext:jersey-entity-filtering 840 | org.sonatype.nexus:nexus-client-core 841 | com.google.apis:google-api-services-storage 842 | org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec 843 | com.amazonaws:aws-java-sdk-ssm 844 | org.hamcrest:hamcrest-integration 845 | com.eed3si9n:shaded-scalajson_2.12 846 | io.lettuce:lettuce-core 847 | com.github.fge:msg-simple 848 | org.quartz-scheduler:quartz 849 | org.apache.avro:avro-ipc 850 | org.awaitility:awaitility 851 | com.netflix.archaius:archaius-core 852 | com.rabbitmq:amqp-client 853 | com.github.fge:btf 854 | com.eed3si9n:sjson-new-murmurhash_2.12 855 | org.joda:joda-convert 856 | org.apache.lucene:lucene-memory 857 | org.glassfish.jersey.media:jersey-media-json-jackson 858 | io.netty:netty-transport-native-kqueue 859 | org.apache-extras.beanshell:bsh 860 | org.abego.treelayout:org.abego.treelayout.core 861 | org.apache.maven.wagon:wagon-ssh-common 862 | io.get-coursier:lm-coursier-shaded_2.12 863 | com.amazonaws:aws-java-sdk-iam 864 | com.nimbusds:lang-tag 865 | org.bouncycastle:bcpg-jdk15on 866 | com.fasterxml.jackson.module:jackson-module-scala_2.12 867 | com.yammer.metrics:metrics-core 868 | org.apache.lucene:lucene-suggest 869 | com.eed3si9n:gigahorse-core_2.12 870 | com.eed3si9n:gigahorse-okhttp_2.12 871 | com.amazonaws:aws-java-sdk-cloudformation 872 | org.sonatype.spice.zapper:spice-zapper 873 | org.jacoco:org.jacoco.ant 874 | javax.cache:cache-api 875 | org.parboiled:parboiled-core 876 | com.clearspring.analytics:stream 877 | org.apache.commons:commons-crypto 878 | org.webjars:webjars-locator-core 879 | com.github.mifmif:generex 880 | org.elasticsearch:elasticsearch 881 | software.amazon.awssdk:metrics-spi 882 | io.opentracing:opentracing-noop 883 | org.apache.lucene:lucene-backward-codecs 884 | cglib:cglib-nodep 885 | org.mortbay.jetty:jetty-sslengine 886 | org.rnorth.duct-tape:duct-tape 887 | org.elasticsearch.client:elasticsearch-rest-client 888 | org.apache.maven.wagon:wagon-http-shared 889 | io.jsonwebtoken:jjwt-api 890 | org.codehaus.woodstox:woodstox-core-asl 891 | org.apache.maven.doxia:doxia-module-xhtml5 892 | com.github.docker-java:docker-java-api 893 | com.fasterxml.jackson.module:jackson-module-afterburner 894 | software.amazon.awssdk:aws-query-protocol 895 | org.apache.lucene:lucene-misc 896 | org.liquibase:liquibase-core 897 | org.apache.maven.surefire:surefire-shared-utils 898 | org.apache.lucene:lucene-highlighter 899 | com.github.docker-java:docker-java-transport 900 | com.googlecode.java-diff-utils:diffutils 901 | org.apache.maven.surefire:surefire-testng 902 | org.apache.htrace:htrace-core4 903 | com.typesafe.netty:netty-reactive-streams-http 904 | org.apache.maven.surefire:surefire-testng-utils 905 | org.apache.lucene:lucene-join 906 | org.attoparser:attoparser 907 | software.amazon.eventstream:eventstream 908 | com.auth0:java-jwt 909 | org.apache.velocity:velocity-engine-core 910 | net.sf.proguard:proguard-base 911 | org.apache.lucene:lucene-grouping 912 | org.apache.maven.surefire:surefire-extensions-spi 913 | io.jsonwebtoken:jjwt-impl 914 | org.parboiled:parboiled-java 915 | org.apache.hive:hive-storage-api 916 | com.squareup:kotlinpoet 917 | javax.transaction:javax.transaction-api 918 | dnsjava:dnsjava 919 | org.sonatype.sisu.siesta:siesta-common 920 | com.sun.xml.messaging.saaj:saaj-impl 921 | org.eclipse.jetty.websocket:websocket-server 922 | pl.project13.maven:git-commit-id-plugin 923 | org.sonatype.sisu.siesta:siesta-client 924 | org.scalatest:scalatest_2.12 925 | net.sf.proguard:proguard-gradle 926 | com.amazonaws:aws-java-sdk-logs 927 | com.google.googlejavaformat:google-java-format 928 | org.thymeleaf:thymeleaf-spring5 929 | org.apache.arrow:arrow-vector 930 | org.apache.arrow:arrow-format 931 | org.eclipse.jetty.websocket:websocket-servlet 932 | com.squareup.retrofit2:converter-gson 933 | org.mongodb:mongo-java-driver 934 | com.opencsv:opencsv 935 | org.scala-sbt:template-resolver 936 | org.codehaus.groovy:groovy-ant 937 | io.dropwizard.metrics:metrics-graphite 938 | org.codehaus.groovy:groovy-groovydoc 939 | org.apache.logging.log4j:log4j-1.2-api 940 | com.sun.mail:jakarta.mail 941 | org.springframework.kafka:spring-kafka 942 | com.github.docker-java:docker-java-transport-zerodep 943 | org.pegdown:pegdown 944 | org.springframework.data:spring-data-redis 945 | org.springframework.boot:spring-boot-starter-mail 946 | org.apache.maven.surefire:surefire-junit47 947 | org.apache.lucene:lucene-spatial3d 948 | xml-resolver:xml-resolver 949 | com.google.cloud:google-cloud-storage 950 | org.apache.maven.surefire:common-junit48 951 | com.squareup.moshi:moshi 952 | com.github.fge:uri-template 953 | org.jogamp.gluegen:gluegen-rt 954 | com.google.zxing:core 955 | org.jogamp.jogl:jogl-all 956 | org.scala-lang:scalap 957 | com.amazonaws:aws-java-sdk-autoscaling 958 | org.springframework.boot:spring-boot-starter-data-redis 959 | com.github.fge:jackson-coreutils 960 | com.github.jnr:jnr-a64asm 961 | com.amazonaws:aws-java-sdk-rds 962 | org.json4s:json4s-scalap_2.12 963 | com.typesafe.scala-logging:scala-logging_2.12 964 | org.jruby.jcodings:jcodings 965 | com.mchange:c3p0 966 | org.jruby.joni:joni 967 | org.json4s:json4s-ast_2.12 968 | org.json4s:json4s-core_2.12 969 | com.amazonaws:aws-java-sdk-simpleworkflow 970 | com.twitter:chill-java 971 | com.fasterxml.jackson.module:jackson-module-scala_2.11 972 | org.slf4j:slf4j-ext 973 | org.apache.ws.xmlschema:xmlschema-core 974 | org.apache.maven.wagon:wagon-ssh 975 | org.apache.calcite:calcite-core 976 | javax.mail:mailapi 977 | org.jetbrains.kotlinx:kotlinx-serialization-core-jvm 978 | org.apache.lucene:lucene-spatial-extras 979 | org.apache.calcite:calcite-linq4j 980 | com.aliyun:aliyun-java-sdk-core 981 | com.101tec:zkclient 982 | org.springframework.data:spring-data-keyvalue 983 | org.apache.commons:commons-configuration2 984 | com.google.cloud:google-cloud-core-grpc 985 | com.amazonaws:aws-java-sdk-xray 986 | net.snowflake:spark-snowflake_2.11 987 | com.github.javaparser:javaparser-core 988 | args4j:args4j 989 | com.amazonaws:aws-java-sdk-elasticbeanstalk 990 | org.apache.cxf:cxf-core 991 | org.apache.maven.doxia:doxia-module-markdown 992 | org.apache.santuario:xmlsec 993 | org.rnorth.visible-assertions:visible-assertions 994 | cglib:cglib 995 | org.thymeleaf.extras:thymeleaf-extras-java8time 996 | org.apache.maven.wagon:wagon-file 997 | org.xerial:sqlite-jdbc 998 | com.amazonaws:aws-java-sdk-route53 999 | org.pantsbuild:jarjar 1000 | org.jline:jline-terminal 1001 | -------------------------------------------------------------------------------- /doc/WatchList.txt: -------------------------------------------------------------------------------- 1 | junit:junit 2 | org.junit.jupiter:junit-jupiter 3 | -------------------------------------------------------------------------------- /doc/WatchList.txt.md: -------------------------------------------------------------------------------- 1 | # WatchList.txt 2 | 3 | - 🧩 1 (50.0%) Java modules (module descriptor with stable name and API) 4 | - ⬜ 1 (50.0%) Automatic Java modules (name derived from JAR manifest) 5 | - ⚪ 0 (0.0%) Automatic Java modules (name derived from JAR filename) 6 | - ➖ 0 (0.0%) Unrelated artifacts (BOM, POM, ... or not recently updated) 7 | 8 | | | Module | Group and Artifact | 9 | |---|:-------|:-------------------| 10 | | ⬜ | `junit` | `junit:junit` | 11 | | 🧩 | `org.junit.jupiter` | `org.junit.jupiter:junit-jupiter` | 12 | -------------------------------------------------------------------------------- /doc/badges/badges-org.junit.jupiter-junit-jupiter.md: -------------------------------------------------------------------------------- 1 | # Badges of org.junit.jupiter:junit-jupiter 2 | 3 | ## Version 5.7.0 4 | 5 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 6 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 7 | ## Version 5.7.1 8 | 9 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 10 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 11 | ## Version 5.4.1 12 | 13 | - `Scan[G=org.junit.jupiter, G2=org.junit.jupiter, A=junit-jupiter, GA=org.junit.jupiter:junit-jupiter, V=5.4.1, module=org.junit.jupiter, kind=automatic, requires=[]]` 14 | ## Version 5.4.0 15 | 16 | - `Scan[G=org.junit.jupiter, G2=org.junit.jupiter, A=junit-jupiter, GA=org.junit.jupiter:junit-jupiter, V=5.4.0, module=org.junit.jupiter, kind=automatic, requires=[]]` 17 | ## Version 5.10.0-M1 18 | 19 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 20 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 21 | ## Version 5.9.0-M1 22 | 23 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 24 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 25 | ## Version 5.11.0-RC1 26 | 27 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 28 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 29 | ## Version 5.5.0-M1 30 | 31 | - `Scan[G=org.junit.jupiter, G2=org.junit.jupiter, A=junit-jupiter, GA=org.junit.jupiter:junit-jupiter, V=5.5.0-M1, module=org.junit.jupiter, kind=automatic, requires=[]]` 32 | ## Version 5.4.0-RC1 33 | 34 | - `Scan[G=org.junit.jupiter, G2=org.junit.jupiter, A=junit-jupiter, GA=org.junit.jupiter:junit-jupiter, V=5.4.0-RC1, module=org.junit.jupiter, kind=automatic, requires=[]]` 35 | ## Version 5.4.0-RC2 36 | 37 | - `Scan[G=org.junit.jupiter, G2=org.junit.jupiter, A=junit-jupiter, GA=org.junit.jupiter:junit-jupiter, V=5.4.0-RC2, module=org.junit.jupiter, kind=automatic, requires=[]]` 38 | ## Version 5.8.0-RC1 39 | 40 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 41 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 42 | ## Version 5.12.0 43 | 44 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 45 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 46 | ## Version 5.12.1 47 | 48 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 49 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 50 | ## Version 5.6.0-M1 51 | 52 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 53 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 54 | ## Version 5.6.2 55 | 56 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 57 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 58 | ## Version 5.6.0 59 | 60 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 61 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 62 | ## Version 5.6.1 63 | 64 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 65 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 66 | ## Version 5.5.0-RC1 67 | 68 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 69 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 70 | ## Version 5.5.0-RC2 71 | 72 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 73 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 74 | ## Version 5.11.0-M2 75 | 76 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 77 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 78 | ## Version 5.11.0-M1 79 | 80 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 81 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 82 | ## Version 5.12.0-RC1 83 | 84 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 85 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 86 | ## Version 5.12.0-RC2 87 | 88 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 89 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 90 | ## Version 5.9.0 91 | 92 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 93 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 94 | ## Version 5.9.3 95 | 96 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 97 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 98 | ## Version 5.9.2 99 | 100 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 101 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 102 | ## Version 5.9.1 103 | 104 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 105 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 106 | ## Version 5.9.0-RC1 107 | 108 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 109 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 110 | ## Version 5.11.0 111 | 112 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 113 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 114 | ## Version 5.11.1 115 | 116 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 117 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 118 | ## Version 5.11.2 119 | 120 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 121 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 122 | ## Version 5.11.3 123 | 124 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 125 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 126 | ## Version 5.11.4 127 | 128 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 129 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 130 | ## Version 5.7.0-M1 131 | 132 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 133 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 134 | ## Version 5.12.0-M1 135 | 136 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 137 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 138 | ## Version 5.5.1 139 | 140 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 141 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 142 | ## Version 5.5.0 143 | 144 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 145 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 146 | ## Version 5.5.2 147 | 148 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 149 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 150 | ## Version 5.6.0-RC1 151 | 152 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 153 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 154 | ## Version 5.8.0 155 | 156 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 157 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 158 | ## Version 5.8.2 159 | 160 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 161 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 162 | ## Version 5.8.1 163 | 164 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 165 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 166 | ## Version 5.10.0 167 | 168 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 169 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 170 | ## Version 5.10.1 171 | 172 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 173 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 174 | ## Version 5.10.2 175 | 176 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 177 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 178 | ## Version 5.8.0-M1 179 | 180 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 181 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 182 | ## Version 5.10.0-RC1 183 | 184 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 185 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 186 | ## Version 5.10.0-RC2 187 | 188 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 189 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 190 | ## Version 5.13.0-M3 191 | 192 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 193 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 194 | ## Version 5.13.0-M2 195 | 196 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 197 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 198 | ## Version 5.13.0-M1 199 | 200 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 201 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 202 | ## Version 5.4.0-M1 203 | 204 | - `Scan[G=org.junit.jupiter, G2=org.junit.jupiter, A=junit-jupiter, GA=org.junit.jupiter:junit-jupiter, V=5.4.0-M1, module=org.junit.jupiter, kind=automatic, requires=[]]` 205 | ## Version 5.7.0-RC1 206 | 207 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 208 | - ![module-name](https://img.shields.io/badge/module--name-org.junit.jupiter-green) 209 | -------------------------------------------------------------------------------- /doc/badges/badges-org.slf4j-slf4j-api.md: -------------------------------------------------------------------------------- 1 | # Badges of org.slf4j:slf4j-api 2 | 3 | ## Version 2.0.0-beta1 4 | 5 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 6 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 7 | ## Version 2.0.0-beta0 8 | 9 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 10 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 11 | ## Version 2.0.0-alpha0 12 | 13 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 14 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 15 | ## Version 2.0.0-alpha1 16 | 17 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 18 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 19 | ## Version 2.0.0-alpha2 20 | 21 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 22 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 23 | ## Version 2.0.0-alpha3 24 | 25 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 26 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 27 | ## Version 2.0.0-alpha4 28 | 29 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 30 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 31 | ## Version 2.0.0-alpha5 32 | 33 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 34 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 35 | ## Version 2.0.0-alpha6 36 | 37 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 38 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 39 | ## Version 2.0.0-alpha7 40 | 41 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 42 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 43 | ## Version 2.0.0 44 | 45 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 46 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 47 | ## Version 2.0.1 48 | 49 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 50 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 51 | ## Version 2.0.3 52 | 53 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 54 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 55 | ## Version 2.0.2 56 | 57 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 58 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 59 | ## Version 2.0.4 60 | 61 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 62 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 63 | ## Version 2.0.5 64 | 65 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 66 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 67 | ## Version 2.0.7 68 | 69 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 70 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 71 | ## Version 2.0.8 72 | 73 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 74 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 75 | ## Version 2.0.9 76 | 77 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 78 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 79 | ## Version 2.1.0-alpha0 80 | 81 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 82 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 83 | ## Version 2.1.0-alpha1 84 | 85 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 86 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 87 | ## Version 1.8.0-beta2 88 | 89 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 90 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 91 | ## Version 1.8.0-beta4 92 | 93 | - ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green) 94 | - ![module-name](https://img.shields.io/badge/module--name-org.slf4j-green) 95 | -------------------------------------------------------------------------------- /doc/badges/badges.txt: -------------------------------------------------------------------------------- 1 | org.junit.jupiter:junit-jupiter 2 | org.slf4j:slf4j-api 3 | -------------------------------------------------------------------------------- /doc/suspicious/README.md: -------------------------------------------------------------------------------- 1 | # Suspicious Artifacts 2 | 3 | Maven artifacts and Java modules listed in this directory didn't make it into the `modules.properties` database. 4 | 5 | ## Illegal Automatic-Module-Name Manifest Entries 6 | 7 | ▶ [illegal-automatic-module-names.txt](illegal-automatic-module-names.txt) 8 | 9 | A Maven artifact is considered to be suspicious if its JAR file contains an illegal `Automatic-Module-Name` manifest entry. 10 | 11 | Illegal? An empty name, a name that contains `-` characters, a name starting numbers, a name that contains Java keywords, etc., is illegal. 12 | Consult chapter [Module Declarations](https://docs.oracle.com/javase/specs/jls/se9/html/jls-7.html#jls-7.7) of the Java Language Specification for details. 13 | TLDR; the name must be usable in `requires NAME;` directives of other modules. 14 | 15 | Examples of illegal names include: 16 | 17 | - `org.apache.jena.jena-fuseki-core`: ❌ no `-` allowed 18 | - `org.talend.sdk.component.runtime..standalone` ❌ no `..` allowed 19 | - `org.neo4j.tooling.import` ❌ `import` is a Java keyword 20 | - `org.drools.wb.enum.editor.api`: ❌ `enum` is a Java keyword 21 | - `org.kie.wb.common.default.editor.api` ❌ `default` is a Java keyword 22 | 23 | ## Impostor Modules 24 | 25 | ▶ [impostor-modules.md](impostor-modules.md) 26 | 27 | An impostor module is a Maven artifact that contains the `module-info.class` file from a different Maven artifact. 28 | Some well known modules that were packaged as Maven artifacts by their authors, have been repackaged into dozens of other Maven artifacts by the maintainers of those other artifacts. 29 | This makes it look like there are dozens of modules with the same name in Maven Central -- all but one are impostor modules. 30 | 31 | For example, over 100 artifacts on Maven Central claim to be the module `org.apache.logging.log4j`, but only one of those artifacts (`org.apache.logging.log4j:log4j`) is the "real" module. 32 | If your POM depends on the one true artifact and _any_ of the over 100 other artifacts, then you will experience problems when your module tries to say `requires org.apache.logging.log4j;`. 33 | -------------------------------------------------------------------------------- /src/Database.java: -------------------------------------------------------------------------------- 1 | import java.lang.module.ModuleDescriptor; 2 | import java.nio.file.Files; 3 | import java.nio.file.Path; 4 | import java.util.*; 5 | import java.util.function.Function; 6 | import java.util.stream.Collectors; 7 | 8 | class Database { 9 | public static void main(String... args) throws Exception { 10 | var directory = Path.of(args.length == 1 ? args[0] : "se"); 11 | var out = Files.createDirectories(Path.of("out")); 12 | 13 | var cache = out.resolve("cached-lines.csv"); 14 | if (!Files.isReadable(cache)) { 15 | var files = new ArrayList(); 16 | try (var stream = Files.newDirectoryStream(directory, "*.csv")) { 17 | stream.forEach(files::add); 18 | } 19 | files.sort(Comparator.comparing(Path::getFileName)); 20 | System.out.printf("Reading %d files in %s...%n", files.size(), directory); 21 | var lines = new LinkedHashSet(files.size(), 1); 22 | for (int i = 0; i < files.size(); i++) { 23 | var file = files.get(i); 24 | if (i % 1000 == 0) System.out.println(file); 25 | lines.addAll(Files.readAllLines(file)); 26 | } 27 | System.out.printf("Found %d distinct lines in %d files.%n", lines.size(), files.size()); 28 | Files.write(cache, lines); 29 | System.out.printf("Wrote cache of size %d bytes to %s%n", Files.size(cache), cache); 30 | } 31 | System.out.printf("Loading cache from %s with %s bytes%n", cache, Files.size(cache)); 32 | var lines = new ArrayList<>(Files.readAllLines(cache)); 33 | System.out.printf("Found %,d distinct GAV lines (upload events since 2018).%n", lines.size()); 34 | 35 | var plainLines = new ArrayList(); 36 | var automaticLines = new ArrayList(); 37 | var explicitLines = new ArrayList(); 38 | for (var line : lines) { 39 | if (line.contains(",automatic,")) { 40 | automaticLines.add(line); 41 | continue; 42 | } 43 | if (line.contains(",explicit,")) { 44 | explicitLines.add(line); 45 | continue; 46 | } 47 | plainLines.add(line); 48 | } 49 | 50 | System.out.printf("Found %,d GAV lines without a module marker.%n", plainLines.size()); 51 | Files.write(Path.of("out/plain-lines.csv"), plainLines); 52 | System.out.printf("Found %,d GAV lines with an automatic module marker.%n", automaticLines.size()); 53 | Files.write(Path.of("out/automatic-lines.csv"), automaticLines); 54 | System.out.printf("Found %,d GAV lines with an explicit module marker.%n", explicitLines.size()); 55 | Files.write(Path.of("out/explicit-lines.csv"), explicitLines); 56 | 57 | var errors = new TreeMap(); 58 | var artifacts = new TreeMap>(); 59 | var module = new TreeMap>(); 60 | var version = new TreeMap>(); 61 | var unique = new TreeMap>(); 62 | var modest = new TreeMap>(); 63 | for (var line : explicitLines) { 64 | try { 65 | var entry = Entry.of(line); 66 | artifacts.computeIfAbsent(entry.toGA(), __ -> new ArrayList<>()).add(entry); 67 | var name = entry.module().name(); 68 | module.computeIfAbsent(name, __ -> new ArrayList<>()).add(entry); 69 | if (entry.module.version().isPresent()) { 70 | version.computeIfAbsent(name, __ -> new ArrayList<>()).add(entry); 71 | } 72 | if (!entry.isUniqueModule()) continue; 73 | unique.computeIfAbsent(name, __ -> new ArrayList<>()).add(entry); 74 | if (!entry.isModestModule()) continue; 75 | modest.computeIfAbsent(name, __ -> new ArrayList<>()).add(entry); 76 | } catch (IllegalArgumentException exception) { 77 | errors.put(line, exception); 78 | } 79 | } 80 | System.out.printf("Found %,d GAV lines with module-related errors.%n", errors.size()); 81 | write(Path.of("out/line-errors.properties"), errors); 82 | 83 | System.out.printf("Found %,d distinct GA (version ignored) artifacts.%n", artifacts.size()); 84 | write( 85 | Path.of("out/distinct-artifacts.properties"), 86 | artifacts, 87 | entries -> entries.stream().map(Entry::version).toList().toString()); 88 | 89 | System.out.printf("Found %,d distinct modules.%n", module.size()); 90 | write( 91 | Path.of("out/distinct-modules-first.properties"), 92 | module, 93 | entries -> entries.getFirst().toGAV()); 94 | write( 95 | Path.of("out/distinct-modules-last.properties"), 96 | module, 97 | entries -> entries.getLast().toGAV()); 98 | 99 | System.out.printf("Found %,d versioned modules.%n", version.size()); 100 | write(Path.of("out/versioned-modules.properties"), version, entries -> entries.getLast().module().toNameAndVersion()); 101 | 102 | System.out.printf("Found %,d unique modules.%n", unique.size()); 103 | write(Path.of("out/unique-modules.properties"), unique, entries -> entries.getLast().toGAV()); 104 | 105 | System.out.printf("Found %,d modest modules.%n", modest.size()); 106 | write(Path.of("out/modest-modules.properties"), modest, entries -> entries.getLast().toGAV()); 107 | } 108 | 109 | record Entry(String groupId, String artifactId, String version, ModuleDescriptor module) { 110 | static Entry of(String line) { 111 | var values = line.split(","); 112 | var groupId = values[0]; 113 | var artifactId = values[1]; 114 | var version = values[2]; 115 | if (SYSTEM_MODULE_NAMES.contains(values[3])) 116 | throw new IllegalArgumentException(values[3] + " is a name of a system module"); 117 | var module = ModuleDescriptor.newModule(values[3]); 118 | if (!values[4].equals("-")) module.version(values[4]); 119 | // assert "explicit".equals(values[5]); 120 | if (!values[6].equals("-")) Arrays.stream(values[6].split(" \\+ ")).forEach(module::requires); 121 | return new Entry(groupId, artifactId, version, module.build()); 122 | } 123 | 124 | boolean isUniqueModule() { 125 | return module.name().startsWith(groupId); 126 | } 127 | 128 | boolean isModestModule() { 129 | var externals = 130 | module.requires().stream() 131 | .filter(requires -> !SYSTEM_MODULE_NAMES.contains(requires.name())) 132 | .toList(); 133 | return externals.isEmpty(); 134 | } 135 | 136 | String toGA() { 137 | return groupId + ':' + artifactId; 138 | } 139 | 140 | String toGAV() { 141 | return groupId + ':' + artifactId + ':' + version; 142 | } 143 | } 144 | 145 | static final TreeSet SYSTEM_MODULE_NAMES = 146 | Object.class.getModule().getLayer().modules().stream() 147 | .map(Module::getName) 148 | .collect(Collectors.toCollection(TreeSet::new)); 149 | 150 | static void write(Path path, Map map) { 151 | write(path, map, Object::toString); 152 | } 153 | 154 | static void write(Path path, Map map, Function function) { 155 | var lines = new ArrayList(); 156 | for (var entry : map.entrySet()) { 157 | var line = entry.getKey().replace(":", "\\:") + '=' + function.apply(entry.getValue()); 158 | lines.add(line); 159 | } 160 | try { 161 | Files.write(path, lines); 162 | } catch (Exception exception) { 163 | throw new RuntimeException(exception); 164 | } 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /src/Scanner.java: -------------------------------------------------------------------------------- 1 | import static java.lang.String.format; 2 | import static java.lang.String.join; 3 | import static java.util.stream.Collectors.groupingBy; 4 | import static java.util.stream.Collectors.mapping; 5 | import static java.util.stream.Collectors.toList; 6 | 7 | import java.lang.module.ModuleDescriptor; 8 | import java.nio.file.Files; 9 | import java.nio.file.Path; 10 | import java.util.ArrayList; 11 | import java.util.Arrays; 12 | import java.util.Comparator; 13 | import java.util.HashSet; 14 | import java.util.List; 15 | import java.util.Set; 16 | import java.util.StringJoiner; 17 | import java.util.TreeMap; 18 | import java.util.TreeSet; 19 | import java.util.stream.Collectors; 20 | import java.util.stream.Stream; 21 | 22 | class Scanner { 23 | 24 | public static void main(String... args) throws Exception { 25 | if (args.length == 0) { 26 | System.err.println("Usage: Scanner DIRECTORY [file]"); 27 | return; 28 | } 29 | var scanner = new Scanner(args[0]).scan(); 30 | out("%,11d lines%n", scanner.lines); 31 | out("%,11d distinct scan lines%n", scanner.scans.size()); 32 | out("%,11d artifacts%n", scanner.facts.size()); 33 | var values = scanner.facts.values(); 34 | out("%,11d JAR files are plain%n", values.stream().filter(Scan::isPlain).count()); 35 | out( 36 | "%,11d JAR files with Automatic-Module-Name%n", 37 | values.stream().filter(Scan::isAutomatic).count()); 38 | out( 39 | "%,11d JAR files with module-info.class%n", 40 | values.stream().filter(Scan::isExplicit).count()); 41 | out("%,11d distinct modules%n", scanner.modules.size()); 42 | out("%,11d unique modules%n", scanner.uniques.size()); 43 | Files.createDirectories(Path.of("out")); 44 | out("%,11d composable modules%n", scanner.composables.size()); 45 | Files.write(Path.of("out", "composable-modules.txt"), scanner.composables); 46 | out("-%n"); 47 | out("%,11d in total required modules%n", scanner.requires.size()); 48 | Files.write(Path.of("out", "total-requires.txt"), scanner.requires); 49 | var unknown = new TreeSet<>(scanner.requires); 50 | unknown.removeAll(scanner.uniques.keySet()); 51 | unknown.removeAll(scanner.modules.keySet()); 52 | SYSTEM_MODULE_NAMES.forEach(unknown::remove); 53 | out("%,11d unknown required modules%n", unknown.size()); 54 | Files.write(Path.of("out", "unknown-requires.txt"), unknown); 55 | if (args.length == 2) { 56 | var lines = new ArrayList(); 57 | scanner.uniques.forEach((module, uri) -> lines.add(module + '=' + uri)); 58 | var file = Path.of(args[1]); 59 | var parent = file.getParent(); 60 | if (parent != null) Files.createDirectories(parent); 61 | Files.write(file, lines); 62 | out("Wrote unique module-uri pairs to %s%n", file.toUri()); 63 | } 64 | if (Boolean.getBoolean("badges")) scanner.writeBadgeTables(Path.of("doc", "badges")); 65 | if (Boolean.getBoolean("doc")) scanner.writeDocTables(Path.of("doc"), "*.txt"); 66 | if (Boolean.getBoolean("illegal-automatic-module-names")) { 67 | var lines = 68 | scanner 69 | .scansWithIllegalAutomaticModuleNames() 70 | .map(scan -> String.format("%s:%s -> %s", scan.GA, scan.V, scan.module)) 71 | .toList(); 72 | Files.write(Path.of("doc/suspicious/illegal-automatic-module-names.txt"), lines); 73 | } 74 | if (Boolean.getBoolean("impostor-modules")) { 75 | var impostors = scanner.searchImpostors(); 76 | impostors.sort(Comparator.comparing(it -> -it.lines.size())); 77 | var lines = new ArrayList(); 78 | lines.add("# Impostor Modules"); 79 | lines.add(""); 80 | lines.add( 81 | """ 82 | An impostor module is a Maven artifact that contains the `module-info.class` file from a different Maven artifact. 83 | Some well known modules that were packaged as Maven artifacts by their authors, have been repackaged into dozens of other Maven artifacts by the maintainers of those other artifacts. 84 | This makes it look like there are dozens of modules with the same name in Maven Central -- all but one are impostor modules."""); 85 | lines.add(""); 86 | impostors.stream() 87 | .limit(25) 88 | .map(it -> String.format("1. `%s` x%d", it.module, it.lines().size())) 89 | .forEach(lines::add); 90 | lines.add("1. _... and some more._"); 91 | for (var impostor : impostors) { 92 | var module = impostor.module; 93 | var size = impostor.lines.size(); 94 | if (size < 3) continue; // skip small impostor sets in order to keep the file size small 95 | lines.add(""); 96 | lines.add("## " + module); 97 | if (size >= 10) { 98 | lines.add(""); 99 | lines.add( 100 | """ 101 | For example, at least %d artifacts on Maven Central claim to be the module `%s`, but only one of those artifacts is the "real" (annotated with a 🧩 tag) module. 102 | If your project depends on the one true artifact and _any_ of the other artifacts, then you will experience problems when your module tries to say `requires %s;`.""" 103 | .formatted(size, module, module)); 104 | } 105 | lines.add(""); 106 | impostor.lines.forEach(lines::add); 107 | } 108 | Files.write(Path.of("doc/suspicious/impostor-modules.md"), lines); 109 | } 110 | } 111 | 112 | static void out(String format, Object... args) { 113 | System.out.printf(format, args); 114 | } 115 | 116 | static String computeMavenGroupAlias(String group) { 117 | return switch (group) { 118 | case "com.fasterxml.jackson.core" -> "com.fasterxml.jackson"; 119 | case "com.github.almasb" -> "com.almasb"; 120 | case "io.github.openfeign" -> "feign"; 121 | case "javax.json" -> "java.json"; 122 | case "net.colesico.framework" -> "colesico.framework"; 123 | case "org.jetbrains.kotlin" -> "kotlin"; 124 | case "org.jfxtras" -> "jfxtras"; 125 | case "org.openjfx" -> "javafx"; 126 | case "org.ow2.asm" -> "org.objectweb.asm"; 127 | case "org.projectlombok" -> "lombok"; 128 | case "org.swimos" -> "swim"; 129 | default -> group.replace("-", ""); 130 | }; 131 | } 132 | 133 | static boolean isIllegalModuleName(String name) { 134 | try { 135 | ModuleDescriptor.newModule(name); 136 | return false; 137 | } catch (IllegalArgumentException exception) { 138 | return true; 139 | } 140 | } 141 | 142 | final Path directory; 143 | long lines; 144 | final HashSet scans; // distinct scan lines 145 | final TreeMap facts; // "G:A[:C]" -> Scan 146 | final TreeMap> modules; // "module" -> [Scan...] 147 | final TreeMap uniques; // "module" -> "uri" 148 | final TreeMap uniqueGAs; // "module" -> "GA" 149 | final TreeSet composables; 150 | final TreeSet requires; // ["module", "module.b", ... "module.z"] 151 | 152 | Scanner(String directory) { 153 | this.directory = Path.of(directory); 154 | this.scans = new HashSet<>(); 155 | this.facts = new TreeMap<>(); 156 | this.modules = new TreeMap<>(); 157 | this.uniques = new TreeMap<>(); 158 | this.uniqueGAs = new TreeMap<>(); 159 | this.composables = new TreeSet<>(); 160 | this.requires = new TreeSet<>(); 161 | } 162 | 163 | Scanner scan() throws Exception { 164 | var files = new ArrayList(); 165 | try (var stream = Files.newDirectoryStream(directory, "*.csv")) { 166 | stream.forEach(files::add); 167 | } 168 | files.sort(Comparator.comparing(Path::getFileName)); 169 | out("Scanning %d files in %s...%n", files.size(), directory); 170 | for (var file : files) scanFile(file); 171 | return this; 172 | } 173 | 174 | void scanFile(Path file) throws Exception { 175 | var traceMaven = System.getProperty("trace-maven"); 176 | var traceModule = System.getProperty("trace-module"); 177 | for (var string : Files.readAllLines(file)) { 178 | lines++; 179 | var line = new Line(string); 180 | if (line.skip()) continue; 181 | var scan = line.scan(); 182 | if (scans.add(scan)) { 183 | facts.put(scan.GA, scan); 184 | if (scan.GA.equals(traceMaven)) out("%s%n", scan); 185 | var module = scan.module(); 186 | if (module.equals(traceModule)) out("%s%n", scan); 187 | if (scan.isExplicit()) { 188 | modules.computeIfAbsent(module, key -> new ArrayList<>()).add(scan); 189 | if (scan.isUnique()) { 190 | uniques.put(module, scan.toUri()); 191 | uniqueGAs.put(module, scan.GA); 192 | requires.addAll(scan.requires()); 193 | if (scan.isComposable()) composables.add(module); 194 | } 195 | } 196 | } 197 | } 198 | } 199 | 200 | Stream scansWithIllegalAutomaticModuleNames() { 201 | return facts.values().stream() 202 | .filter(Scan::isAutomatic) 203 | .filter(scan -> isIllegalModuleName(scan.module())) 204 | .sorted(Comparator.comparing(Scan::GA)); 205 | } 206 | 207 | List searchImpostors() throws Exception { 208 | var impostors = new ArrayList(); 209 | for (var entry : modules.entrySet()) { 210 | var module = entry.getKey(); 211 | var uniqueGA = uniqueGAs.get(module); 212 | var scans = entry.getValue(); 213 | var lines = 214 | scans.stream() 215 | .parallel() 216 | .collect(groupingBy(Scan::GA, mapping(Scan::V, toList()))) 217 | .entrySet() 218 | .stream() 219 | .map(it -> format("1. `%s` %s -> [`%s`]", 220 | it.getKey(), 221 | it.getKey().equals(uniqueGA) ? "🧩" : "", 222 | join("`, `", it.getValue()))) 223 | .sorted() 224 | .toList(); 225 | if (lines.size() > 1) impostors.add(new Impostor(module, lines)); 226 | } 227 | return impostors; 228 | } 229 | 230 | void writeBadgeTables(Path directory) throws Exception { 231 | for (var line : Files.readAllLines(directory.resolve("badges.txt"))) { 232 | var trim = line.trim(); 233 | if (trim.isEmpty() || trim.startsWith("#")) continue; 234 | var fact = facts.get(trim); 235 | if (fact == null) continue; // quick sanity check before streaming all scans 236 | var hits = new ArrayList(); 237 | hits.add("# Badges of " + fact.G + ":" + fact.A); 238 | hits.add(""); 239 | for (var scan : scans) { 240 | if (scan.GA.equals(line)) { 241 | hits.add("## Version " + scan.V); 242 | hits.add(""); 243 | if (scan.isExplicit()) { 244 | hits.add("- ![module-maturity](https://img.shields.io/badge/module--maturity-explicit-green)"); 245 | hits.add("- ![module-name](https://img.shields.io/badge/module--name-"+scan.module+"-green)"); 246 | continue; 247 | } 248 | hits.add("- `" + scan + "`"); 249 | } 250 | } 251 | Files.write(directory.resolve("badges-" + fact.G + "-" + fact.A + ".md"), hits); 252 | } 253 | } 254 | 255 | void writeDocTables(Path directory, String glob) throws Exception { 256 | try (var stream = Files.newDirectoryStream(directory, glob)) { 257 | var iterator = stream.iterator(); 258 | while (iterator.hasNext()) writeDocTable(iterator.next()); 259 | } 260 | } 261 | 262 | void writeDocTable(Path file) throws Exception { 263 | var md = new ArrayList(); 264 | md.add("# " + file.getFileName()); 265 | var summary = md.size(); 266 | md.add(""); 267 | md.add("| | Module | Group and Artifact |"); 268 | md.add("|---|:-------|:-------------------|"); 269 | int total = 0; 270 | int explicit = 0; 271 | int automatic = 0; 272 | int plain = 0; 273 | int unknown = 0; 274 | for (var line : Files.readAllLines(file)) { 275 | var trim = line.trim(); 276 | if (trim.startsWith("#")) continue; 277 | total++; 278 | var scan = facts.get(trim); 279 | if (scan == null) { 280 | unknown++; 281 | continue; 282 | } 283 | var kind = scan.isExplicit() ? "🧩" : scan.isAutomatic() ? "⬜" : "⚪"; 284 | if (scan.isExplicit()) explicit++; 285 | else if (scan.isAutomatic()) automatic++; 286 | else plain++; 287 | var name = scan.isPlain() ? "" : "`" + scan.module + "`"; 288 | md.add("| " + kind + " | " + name + " | `" + trim + "` |"); 289 | } 290 | if (total > 0) { 291 | md.add(summary + 0, ""); 292 | md.add( 293 | summary + 1, 294 | format( 295 | "- 🧩 %,d (%.1f%%) Java modules (module descriptor with stable name and API)", 296 | explicit, explicit * 100d / total)); 297 | md.add( 298 | summary + 2, 299 | format( 300 | "- ⬜ %,d (%.1f%%) Automatic Java modules (name derived from JAR manifest)", 301 | automatic, automatic * 100d / total)); 302 | md.add( 303 | summary + 3, 304 | format( 305 | "- ⚪ %,d (%.1f%%) Automatic Java modules (name derived from JAR filename)", 306 | plain, plain * 100d / total)); 307 | md.add( 308 | summary + 4, 309 | format( 310 | "- ➖ %,d (%.1f%%) Unrelated artifacts (BOM, POM, ... or not recently updated)", 311 | unknown, unknown * 100d / total)); 312 | } 313 | Files.write(file.resolveSibling(file.getFileName() + ".md"), md); 314 | } 315 | 316 | record Line(String string) { 317 | 318 | boolean skip() { 319 | return isLineWithCaption() || !isLineWithEightCommas(); 320 | } 321 | 322 | boolean isLineWithCaption() { 323 | return string.equals( 324 | "groupId,artifactId,version," 325 | + "moduleName,moduleVersion,moduleMode," 326 | + "moduleDependencies,jdepsToolError,jdepsViolations"); 327 | } 328 | 329 | boolean isLineWithEightCommas() { 330 | return string.chars().filter(ch -> ch == ',').count() == 8; 331 | } 332 | 333 | Scan scan() { 334 | return Scan.of(string); 335 | } 336 | } 337 | 338 | // https://github.com/sandermak/modulescanner/blob/master/src/main/java/org/adoptopenjdk/modulescanner/SeparatedValuesPrinter.java 339 | record Scan(String G, String G2, String A, String GA, String V, String module, String kind, List requires) { 340 | 341 | boolean isAutomatic() { 342 | return kind.equals("automatic"); 343 | } 344 | 345 | boolean isExplicit() { 346 | return kind.equals("explicit"); 347 | } 348 | 349 | boolean isPlain() { 350 | return !(isAutomatic() || isExplicit()); 351 | } 352 | 353 | boolean isUnique() { 354 | return module.startsWith(G) || module.startsWith(G2); 355 | } 356 | 357 | boolean isComposable() { 358 | var requires = new HashSet<>(requires()); 359 | requires.removeAll(SYSTEM_MODULE_NAMES); 360 | return requires.isEmpty(); 361 | } 362 | 363 | String toUri() { 364 | return new StringJoiner("/") 365 | .add("https://repo.maven.apache.org/maven2") 366 | .add(G.replace('.', '/')) 367 | .add(A) 368 | .add(V) 369 | .add(A + '-' + V + ".jar") 370 | .toString(); 371 | } 372 | 373 | static Scan of(String line) { 374 | var values = line.split(","); 375 | if (values.length < 9) { 376 | throw new IllegalArgumentException( 377 | "Expected at least 9 values, only got " + values.length + " in: " + line); 378 | } 379 | var G = values[0]; 380 | var G2 = computeMavenGroupAlias(G); 381 | var A = values[1]; 382 | var GA = G + ':' + A; 383 | var V = values[2]; 384 | var module = values[3]; 385 | // moduleVersion = values[4]; 386 | var moduleKind = values[5]; // "explicit", "automatic", 387 | var moduleDependencies = values[6]; // "-" or "a" or "a + b + ... z" 388 | var moduleRequires = computeRequires(moduleDependencies); 389 | return new Scan(G, G2, A, GA, V, module, moduleKind, moduleRequires); 390 | } 391 | 392 | private static List computeRequires(String moduleDependencies) { 393 | if (moduleDependencies == null || moduleDependencies.isBlank() || moduleDependencies.equals("-")) return List.of(); 394 | return Arrays.stream(moduleDependencies.split(" \\+ ")).toList(); 395 | } 396 | } 397 | 398 | record Impostor(String module, List lines) {} 399 | 400 | static final Set SYSTEM_MODULE_NAMES = Object.class.getModule().getLayer().modules().stream() 401 | .map(Module::getName).collect(Collectors.toSet()); 402 | } 403 | --------------------------------------------------------------------------------