in src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java [132:162]
private JarClasses analyzeMultiRelease(JarAnalyzer jarAnalyzer) {
String jarFilename = jarAnalyzer.getFile().getAbsolutePath();
Map<Integer, List<JarEntry>> mapEntries =
jarAnalyzer.getEntries().stream().collect(Collectors.groupingBy(this::jarEntryVersion));
// ordered by increasing Java version
NavigableMap<Integer, JarVersionedRuntime> runtimeVersionsMap = new TreeMap<>();
for (Map.Entry<Integer, List<JarEntry>> mapEntry : mapEntries.entrySet()) {
Integer runtimeVersion = mapEntry.getKey();
List<JarEntry> runtimeVersionEntryList = mapEntry.getValue();
List<JarEntry> classList = jarAnalyzer.getClassEntries(runtimeVersionEntryList);
JarClasses classes = analyze(jarFilename, classList);
runtimeVersionsMap.put(runtimeVersion, new JarVersionedRuntime(runtimeVersionEntryList, classes));
}
JarData jarData = jarAnalyzer.getJarData();
JarVersionedRuntime rootContentVersionedRuntime = runtimeVersionsMap.remove(ROOT);
jarData.setRootEntries(rootContentVersionedRuntime.getEntries());
JarClasses rootJarClasses = rootContentVersionedRuntime.getJarClasses();
jarData.setJarClasses(rootJarClasses);
jarData.setVersionedRuntimes(new JarVersionedRuntimes(runtimeVersionsMap));
return rootJarClasses;
}