diff options
-rw-r--r-- | vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjects.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjects.java b/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjects.java index f569ce6550f..3787d84e4be 100644 --- a/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjects.java +++ b/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjects.java @@ -29,6 +29,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.SortedSet; +import java.util.TreeMap; import java.util.TreeSet; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -59,6 +60,7 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { writeDependencySpec(specFile, deps); log.info("Updated spec file '%s'".formatted(specFile.toString())); } else { + warnOnDuplicateVersions(log, deps); validateDependencies(deps, specFile, aggregatorPomRoot(helper), projectName(helper)); } log.info("The dependency enforcer completed successfully"); @@ -230,6 +232,21 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { } } + private static void warnOnDuplicateVersions(Log log, Dependencies deps) { + Map<String, Set<String>> versionsForDependency = new TreeMap<>(); + Set<Dependency> allDeps = new TreeSet<>(deps.nonTest()); + allDeps.addAll(deps.testOnly()); + for (Dependency d : allDeps) { + String id = "%s:%s".formatted(d.groupId(), d.artifactId()); + versionsForDependency.computeIfAbsent(id, __ -> new TreeSet<>()).add(d.version()); + } + versionsForDependency.forEach((dependency, versions) -> { + if (versions.size() > 1) { + log.warn("'%s' has multiple versions %s".formatted(dependency, versions)); + } + }); + } + private static Path resolveSpecFile(EnforcerRuleHelper helper, String specFile) { return Paths.get(mavenProject(helper).getBasedir() + File.separator + specFile).normalize(); } |