diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2022-11-14 07:54:05 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2022-11-14 07:54:05 +0100 |
commit | 93cd70821efbd5c8a48e2ab8d28b8c89156b3905 (patch) | |
tree | 7b444460bf30a54882670d177f022bc0055e93b2 /vespa-enforcer-extensions | |
parent | 32dd883d7c953fff102434cea71f6daf0454f20d (diff) |
Make command to write spec agnostic to current directory
Diffstat (limited to 'vespa-enforcer-extensions')
2 files changed, 34 insertions, 20 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 22a15052272..275db10344b 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 @@ -51,7 +51,7 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { writeDependencySpec(specFile, dependencies); log.info("Updated spec file '%s'".formatted(specFile.toString())); } else { - validateDependencies(dependencies, specFile, projectName(helper)); + validateDependencies(dependencies, specFile, aggregatorPomRoot(helper), projectName(helper)); } log.info("The dependency enforcer completed successfully"); } @@ -88,7 +88,8 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { @Override public int compareTo(Dependency o) { return COMPARATOR.compare(this, o); } } - static void validateDependencies(SortedSet<Dependency> dependencies, Path specFile, String moduleName) + static void validateDependencies(SortedSet<Dependency> dependencies, Path specFile, Path aggregatorPomRoot, + String moduleName) throws EnforcerRuleException { SortedSet<Dependency> allowedDependencies = loadDependencySpec(specFile); SortedSet<Dependency> forbiddenDependencies = new TreeSet<>(dependencies); @@ -107,9 +108,9 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { } throw new EnforcerRuleException( errorMsg.append("Maven dependency validation failed. ") - .append("To update dependency spec execute following the command from root of aggregator pom:\n") - .append("$ mvn enforcer:enforce -D").append(WRITE_SPEC_PROP).append(" -pl ") - .append(moduleName).append("\n").toString()); + .append("To update dependency spec run:\n") + .append("$ mvn validate -D").append(WRITE_SPEC_PROP).append(" -pl ").append(moduleName) + .append(" -f ").append(aggregatorPomRoot).append("\n").toString()); } } @@ -121,7 +122,7 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { .map(s -> s.replace(".", "\\.").replace("*", ".*").replace(":", "\\:").replace('?', '.')) .collect(Collectors.joining(")|(", "^(", ")$"))); SortedSet<Dependency> dependencies = new TreeSet<>(); - MavenSession session = (MavenSession) helper.evaluate("${session}"); + MavenSession session = mavenSession(helper); var graphBuilder = helper.getComponent(DependencyGraphBuilder.class); List<MavenProject> projects = session.getAllProjects(); if (projects.size() == 1) { @@ -135,7 +136,7 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { addDependenciesRecursive(root, dependencies, ignorePattern); } return dependencies; - } catch (ExpressionEvaluationException | DependencyGraphBuilderException | ComponentLookupException e) { + } catch (DependencyGraphBuilderException | ComponentLookupException e) { throw new RuntimeException(e.getMessage(), e); } } @@ -153,18 +154,29 @@ public class EnforceDependenciesAllProjects implements EnforcerRule { } private static Path resolveSpecFile(EnforcerRuleHelper helper, String specFile) { + 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 Path aggregatorPomRoot(EnforcerRuleHelper helper) { + return mavenSession(helper).getRequest().getPom().toPath(); + } + + private static MavenProject mavenProject(EnforcerRuleHelper helper) { try { - MavenProject project = (MavenProject) helper.evaluate("${project}"); - return Paths.get(project.getBasedir() + File.separator + specFile).normalize(); + return (MavenProject) helper.evaluate("${project}"); } catch (ExpressionEvaluationException e) { throw new RuntimeException(e.getMessage(), e); } } - private static String projectName(EnforcerRuleHelper helper) { + private static MavenSession mavenSession(EnforcerRuleHelper helper) { try { - MavenProject p = (MavenProject) helper.evaluate("${project}"); - return p.getModules().isEmpty() ? p.getName() : "."; + return (MavenSession) helper.evaluate("${session}"); } catch (ExpressionEvaluationException e) { throw new RuntimeException(e.getMessage(), e); } 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 81e22d81f44..5bfd1150ba7 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 @@ -25,13 +25,15 @@ import static org.junit.jupiter.api.Assertions.assertThrows; */ class EnforceDependenciesAllProjectsTest { + private static final Path POM_FILE = Paths.get("/vespa-src/pom.xml"); + @Test void succeeds_dependencies_matches_spec() { SortedSet<Dependency> dependencies = new TreeSet<>(Set.of( Dependency.fromString("com.example:foo:1.2.3"), Dependency.fromString("com.example:bar:2.3.4"))); Path specFile = Paths.get("src/test/resources/allowed-dependencies.txt"); - assertDoesNotThrow(() -> validateDependencies(dependencies, specFile, "my-dep-enforcer")); + assertDoesNotThrow(() -> validateDependencies(dependencies, specFile, POM_FILE, "my-dep-enforcer")); } @Test @@ -42,14 +44,14 @@ class EnforceDependenciesAllProjectsTest { Dependency.fromString("com.example:foobar:3.4.5"))); Path specFile = Paths.get("src/test/resources/allowed-dependencies.txt"); var exception = assertThrows(EnforcerRuleException.class, - () -> validateDependencies(dependencies, specFile, "my-dep-enforcer")); + () -> validateDependencies(dependencies, specFile, POM_FILE, "my-dep-enforcer")); String expectedErrorMessage = """ The dependency enforcer failed: Forbidden dependencies: - com.example:foobar:3.4.5 - Maven dependency validation failed. To update dependency spec execute following the command from root of aggregator pom: - $ mvn enforcer:enforce -DdependencyEnforcer.writeSpec -pl my-dep-enforcer + Maven dependency validation failed. To update dependency spec run: + $ mvn validate -DdependencyEnforcer.writeSpec -pl my-dep-enforcer -f /vespa-src/pom.xml """; assertEquals(expectedErrorMessage, exception.getMessage()); } @@ -60,20 +62,20 @@ class EnforceDependenciesAllProjectsTest { Dependency.fromString("com.example:foo:1.2.3"))); Path specFile = Paths.get("src/test/resources/allowed-dependencies.txt"); var exception = assertThrows(EnforcerRuleException.class, - () -> validateDependencies(dependencies, specFile, "my-dep-enforcer")); + () -> validateDependencies(dependencies, specFile, POM_FILE, "my-dep-enforcer")); String expectedErrorMessage = """ The dependency enforcer failed: Removed dependencies: - com.example:bar:2.3.4 - Maven dependency validation failed. To update dependency spec execute following the command from root of aggregator pom: - $ mvn enforcer:enforce -DdependencyEnforcer.writeSpec -pl my-dep-enforcer + Maven dependency validation failed. To update dependency spec run: + $ mvn validate -DdependencyEnforcer.writeSpec -pl my-dep-enforcer -f /vespa-src/pom.xml """; assertEquals(expectedErrorMessage, exception.getMessage()); } @Test - void writes_valid_spec_file(@TempDir Path tempDir) throws EnforcerRuleException, IOException { + void writes_valid_spec_file(@TempDir Path tempDir) throws IOException { SortedSet<Dependency> dependencies = new TreeSet<>(Set.of( Dependency.fromString("com.example:foo:1.2.3"), Dependency.fromString("com.example:bar:2.3.4"))); |