private void compareDependencies()

in src/main/java/org/apache/maven/buildcache/CacheDiff.java [159:197]


    private void compareDependencies(ProjectsInputInfo current, ProjectsInputInfo baseline) {
        final Map<String, DigestItem> currentDependencies = current.getItems().stream()
                .filter(item -> "dependency".equals(item.getType()))
                .collect(Collectors.toMap(DigestItem::getValue, item -> item));

        final Map<String, DigestItem> baselineDependencies = baseline.getItems().stream()
                .filter(item -> "dependency".equals(item.getType()))
                .collect(Collectors.toMap(DigestItem::getValue, item -> item));

        if (!Objects.equals(currentDependencies.keySet(), baselineDependencies.keySet())) {
            Set<String> currentVsBaseline = diff(currentDependencies.keySet(), baselineDependencies.keySet());
            Set<String> baselineVsCurrent = diff(baselineDependencies.keySet(), currentDependencies.keySet());

            addNewMismatch(
                    "dependencies files",
                    "Remote and local builds contain different sets of dependencies and cannot be matched. "
                            + "Added dependencies: " + currentVsBaseline + ". Removed dependencies: "
                            + baselineVsCurrent,
                    "Remote and local builds should have identical dependencies. "
                            + "The difference manifests changes in downstream dependencies or introduced snapshots.");
            return;
        }

        for (Map.Entry<String, DigestItem> entry : currentDependencies.entrySet()) {
            String dependencyKey = entry.getKey();
            DigestItem currentDependency = entry.getValue();
            // null safe - sets compared for differences above
            final DigestItem baselineDependency = baselineDependencies.get(dependencyKey);
            if (!StringUtils.equals(currentDependency.getHash(), baselineDependency.getHash())) {
                addNewMismatch(
                        dependencyKey,
                        currentDependency.getHash(),
                        baselineDependency.getHash(),
                        "Downstream project or snapshot changed",
                        "Find downstream project and investigate difference in the downstream project. "
                                + "Enable fail fast mode and single threaded execution to simplify debug.");
            }
        }
    }