diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2022-11-17 14:51:21 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2022-11-17 14:51:53 +0100 |
commit | 7ce56f0c58d1d3448bc9f8713d58877e29016e5e (patch) | |
tree | 679a43dd0b47d6f15ebbb3a825eb3131653d413c /vespa-enforcer-extensions | |
parent | 93209e86cd96de5b1d05c95e51f061ce27e76e97 (diff) |
Warn on dependencies with multiple versions
Diffstat (limited to 'vespa-enforcer-extensions')
-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(); } |