Skip to content

Commit 579bdea

Browse files
erichaagdevphilwebb
authored andcommitted
Throw VerificationException for build verification failures
Verification failures are generally failures which verify correctness, e.g., failures caused by test, compilation, linting, etc. Non-verification failures are generally failures related to the build toolchain, e.g., failures caused by dependency resolution, build configuration, etc. Develocity attempts to classify failures based on context, but it doesn't always classify correctly. By default, most failures are classified as non-verification. By explicitly throwing a `VerificationException` for verification task failures, the failures will be appropriately classified. See gh-45187 See also: https://docs.gradle.com/develocity/failure-classification Signed-off-by: Eric Haag <[email protected]>
1 parent 09cf553 commit 579bdea

File tree

5 files changed

+12
-12
lines changed

5 files changed

+12
-12
lines changed

Diff for: buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.tngtech.archunit.lang.ArchRule;
3232
import com.tngtech.archunit.lang.EvaluationResult;
3333
import org.gradle.api.DefaultTask;
34-
import org.gradle.api.GradleException;
3534
import org.gradle.api.Task;
3635
import org.gradle.api.Transformer;
3736
import org.gradle.api.file.DirectoryProperty;
@@ -49,6 +48,7 @@
4948
import org.gradle.api.tasks.PathSensitivity;
5049
import org.gradle.api.tasks.SkipWhenEmpty;
5150
import org.gradle.api.tasks.TaskAction;
51+
import org.gradle.api.tasks.VerificationException;
5252

5353
/**
5454
* {@link Task} that checks for architecture problems.
@@ -86,7 +86,7 @@ void checkArchitecture() throws IOException {
8686
File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile();
8787
writeViolationReport(violations, outputFile);
8888
if (!violations.isEmpty()) {
89-
throw new GradleException("Architecture check failed. See '" + outputFile + "' for details.");
89+
throw new VerificationException("Architecture check failed. See '" + outputFile + "' for details.");
9090
}
9191
}
9292

Diff for: buildSrc/src/main/java/org/springframework/boot/build/bom/CheckBom.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.apache.maven.artifact.versioning.Restriction;
3535
import org.apache.maven.artifact.versioning.VersionRange;
3636
import org.gradle.api.DefaultTask;
37-
import org.gradle.api.GradleException;
3837
import org.gradle.api.artifacts.ConfigurationContainer;
3938
import org.gradle.api.artifacts.dsl.DependencyHandler;
4039
import org.gradle.api.file.RegularFile;
@@ -44,6 +43,7 @@
4443
import org.gradle.api.tasks.PathSensitive;
4544
import org.gradle.api.tasks.PathSensitivity;
4645
import org.gradle.api.tasks.TaskAction;
46+
import org.gradle.api.tasks.VerificationException;
4747

4848
import org.springframework.boot.build.bom.Library.Group;
4949
import org.springframework.boot.build.bom.Library.ImportedBom;
@@ -94,7 +94,7 @@ void checkBom() {
9494
System.out.println();
9595
errors.forEach(System.out::println);
9696
System.out.println();
97-
throw new GradleException("Bom check failed. See previous output for details.");
97+
throw new VerificationException("Bom check failed. See previous output for details.");
9898
}
9999
}
100100

Diff for: buildSrc/src/main/java/org/springframework/boot/build/context/properties/CheckAdditionalSpringConfigurationMetadata.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2024 the original author or authors.
2+
* Copyright 2012-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -31,7 +31,6 @@
3131
import com.fasterxml.jackson.core.JsonParseException;
3232
import com.fasterxml.jackson.databind.JsonMappingException;
3333
import com.fasterxml.jackson.databind.ObjectMapper;
34-
import org.gradle.api.GradleException;
3534
import org.gradle.api.file.FileTree;
3635
import org.gradle.api.file.RegularFileProperty;
3736
import org.gradle.api.tasks.InputFiles;
@@ -40,6 +39,7 @@
4039
import org.gradle.api.tasks.PathSensitivity;
4140
import org.gradle.api.tasks.SourceTask;
4241
import org.gradle.api.tasks.TaskAction;
42+
import org.gradle.api.tasks.VerificationException;
4343

4444
/**
4545
* {@link SourceTask} that checks additional Spring configuration metadata files.
@@ -70,7 +70,7 @@ void check() throws JsonParseException, IOException {
7070
File reportFile = getReportLocation().get().getAsFile();
7171
Files.write(reportFile.toPath(), report, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
7272
if (report.hasProblems()) {
73-
throw new GradleException(
73+
throw new VerificationException(
7474
"Problems found in additional Spring configuration metadata. See " + reportFile + " for details.");
7575
}
7676
}

Diff for: buildSrc/src/main/java/org/springframework/boot/build/context/properties/CheckSpringConfigurationMetadata.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2024 the original author or authors.
2+
* Copyright 2012-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -30,7 +30,6 @@
3030
import com.fasterxml.jackson.databind.JsonMappingException;
3131
import com.fasterxml.jackson.databind.ObjectMapper;
3232
import org.gradle.api.DefaultTask;
33-
import org.gradle.api.GradleException;
3433
import org.gradle.api.file.RegularFileProperty;
3534
import org.gradle.api.provider.ListProperty;
3635
import org.gradle.api.tasks.Input;
@@ -40,6 +39,7 @@
4039
import org.gradle.api.tasks.PathSensitivity;
4140
import org.gradle.api.tasks.SourceTask;
4241
import org.gradle.api.tasks.TaskAction;
42+
import org.gradle.api.tasks.VerificationException;
4343

4444
/**
4545
* {@link SourceTask} that checks {@code spring-configuration-metadata.json} files.
@@ -70,7 +70,7 @@ void check() throws JsonParseException, IOException {
7070
File reportFile = getReportLocation().get().getAsFile();
7171
Files.write(reportFile.toPath(), report, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
7272
if (report.hasProblems()) {
73-
throw new GradleException(
73+
throw new VerificationException(
7474
"Problems found in Spring configuration metadata. See " + reportFile + " for details.");
7575
}
7676
}

Diff for: buildSrc/src/main/java/org/springframework/boot/build/springframework/CheckFactoriesFile.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.Properties;
3232

3333
import org.gradle.api.DefaultTask;
34-
import org.gradle.api.GradleException;
3534
import org.gradle.api.Task;
3635
import org.gradle.api.file.DirectoryProperty;
3736
import org.gradle.api.file.FileCollection;
@@ -43,6 +42,7 @@
4342
import org.gradle.api.tasks.PathSensitivity;
4443
import org.gradle.api.tasks.SkipWhenEmpty;
4544
import org.gradle.api.tasks.TaskAction;
45+
import org.gradle.api.tasks.VerificationException;
4646
import org.gradle.language.base.plugins.LifecycleBasePlugin;
4747

4848
import org.springframework.core.io.support.SpringFactoriesLoader;
@@ -112,7 +112,7 @@ private void check(File factoriesFile) {
112112
File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile();
113113
writeReport(factoriesFile, problems, outputFile);
114114
if (!problems.isEmpty()) {
115-
throw new GradleException("%s check failed. See '%s' for details".formatted(this.path, outputFile));
115+
throw new VerificationException("%s check failed. See '%s' for details".formatted(this.path, outputFile));
116116
}
117117
}
118118

0 commit comments

Comments
 (0)