From 1d090a4db78d683a31df3cd7a2998b49fb2000ef Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Tue, 15 Nov 2022 09:32:24 +0100 Subject: Use `getAllProjects()` + improve write-spec command in error message --- .../enforcer/EnforceDependenciesAllProjects.java | 29 ++++++++++------------ .../EnforceDependenciesAllProjectsTest.java | 4 +-- 2 files changed, 15 insertions(+), 18 deletions(-) (limited to 'vespa-enforcer-extensions/src') 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 480fa04f389..f569ce6550f 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 @@ -113,7 +113,7 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { throw new EnforcerRuleException( errorMsg.append("Maven dependency validation failed. ") .append("If this change was intentional, update the dependency spec by running:\n") - .append("$ mvn validate -D").append(WRITE_SPEC_PROP).append(" -pl ").append(moduleName) + .append("$ mvn validate -D").append(WRITE_SPEC_PROP).append(" -pl :").append(moduleName) .append(" -f ").append(aggregatorPomRoot).append("\n").toString()); } } @@ -151,10 +151,6 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { MavenSession session = mavenSession(helper); var graphBuilder = helper.getComponent(DependencyGraphBuilder.class); List projects = getAllProjects(session, rootProjectId); - if (projects.size() == 1) { - throw new EnforcerRuleException( - "Only a single Maven module detected. Enforcer must be executed from root of aggregator pom."); - } for (MavenProject project : projects) { var req = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest()); req.setProject(project); @@ -177,14 +173,18 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { private static List getAllProjects(MavenSession session, String rootProjectId) throws EnforcerRuleException { if (rootProjectId == null) throw new EnforcerRuleException("Missing required in in pom.xml"); - MavenProject rootProject = session.getProjects() - .stream() - .filter(project -> rootProjectId.equals(projectIdOf(project))) - .findAny() - .orElseThrow(() -> new EnforcerRuleException("Root project not found: " + rootProjectId)); + List allProjects = session.getAllProjects(); + if (allProjects.size() == 1) { + throw new EnforcerRuleException( + "Only a single Maven module detected. Enforcer must be executed from root of aggregator pom."); + } + MavenProject rootProject = allProjects + .stream() + .filter(project -> rootProjectId.equals(projectIdOf(project))) + .findAny() + .orElseThrow(() -> new EnforcerRuleException("Root project not found: " + rootProjectId)); - Map projectsByBaseDir = session - .getProjects() + Map projectsByBaseDir = allProjects .stream() .collect(Collectors.toMap(project -> project.getBasedir().toPath().normalize(), project -> project)); @@ -234,10 +234,7 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { return Paths.get(mavenProject(helper).getBasedir() + File.separator + specFile).normalize(); } - private static String projectName(EnforcerRuleHelper helper) { - MavenProject p = mavenProject(helper); - return p.getModules().isEmpty() ? p.getName() : "."; - } + private static String projectName(EnforcerRuleHelper helper) { return mavenProject(helper).getArtifactId(); } private static Path aggregatorPomRoot(EnforcerRuleHelper helper) { return mavenSession(helper).getRequest().getPom().toPath(); diff --git a/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjectsTest.java b/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjectsTest.java index 6e47aad0d06..59062cbd61c 100644 --- a/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjectsTest.java +++ b/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjectsTest.java @@ -60,7 +60,7 @@ class EnforceDependenciesAllProjectsTest { Forbidden non-test dependencies: - com.example:foobar:3.4.5 Maven dependency validation failed. If this change was intentional, update the dependency spec by running: - $ mvn validate -DdependencyEnforcer.writeSpec -pl my-dep-enforcer -f /vespa-src/pom.xml + $ mvn validate -DdependencyEnforcer.writeSpec -pl :my-dep-enforcer -f /vespa-src/pom.xml """; assertEquals(expectedErrorMessage, exception.getMessage()); } @@ -83,7 +83,7 @@ class EnforceDependenciesAllProjectsTest { Removed test-only dependencies: - com.example:testbar:2.3.4 Maven dependency validation failed. If this change was intentional, update the dependency spec by running: - $ mvn validate -DdependencyEnforcer.writeSpec -pl my-dep-enforcer -f /vespa-src/pom.xml + $ mvn validate -DdependencyEnforcer.writeSpec -pl :my-dep-enforcer -f /vespa-src/pom.xml """; assertEquals(expectedErrorMessage, exception.getMessage()); } -- cgit v1.2.3