summaryrefslogtreecommitdiffstats
path: root/vespa-enforcer-extensions
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2022-11-17 14:51:21 +0100
committerBjørn Christian Seime <bjorncs@yahooinc.com>2022-11-17 14:51:53 +0100
commit7ce56f0c58d1d3448bc9f8713d58877e29016e5e (patch)
tree679a43dd0b47d6f15ebbb3a825eb3131653d413c /vespa-enforcer-extensions
parent93209e86cd96de5b1d05c95e51f061ce27e76e97 (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.java17
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();
}