aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-enforcer-extensions
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2022-11-14 07:54:05 +0100
committerBjørn Christian Seime <bjorncs@yahooinc.com>2022-11-14 07:54:05 +0100
commit93cd70821efbd5c8a48e2ab8d28b8c89156b3905 (patch)
tree7b444460bf30a54882670d177f022bc0055e93b2 /vespa-enforcer-extensions
parent32dd883d7c953fff102434cea71f6daf0454f20d (diff)
Make command to write spec agnostic to current directory
Diffstat (limited to 'vespa-enforcer-extensions')
-rw-r--r--vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjects.java36
-rw-r--r--vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesAllProjectsTest.java18
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")));