Browse Source

Merge pull request #45187 from erichaagdev

* pr/45187:
  Throw `VerificationException` for build verification failures

Closes gh-45187
pull/45202/head
Phillip Webb 12 months ago
parent
commit
ce64f368e6
  1. 4
      buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java
  2. 4
      buildSrc/src/main/java/org/springframework/boot/build/bom/CheckBom.java
  3. 6
      buildSrc/src/main/java/org/springframework/boot/build/context/properties/CheckAdditionalSpringConfigurationMetadata.java
  4. 6
      buildSrc/src/main/java/org/springframework/boot/build/context/properties/CheckSpringConfigurationMetadata.java
  5. 4
      buildSrc/src/main/java/org/springframework/boot/build/springframework/CheckFactoriesFile.java

4
buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java

@ -31,7 +31,6 @@ import com.tngtech.archunit.core.importer.ClassFileImporter;
import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.ArchRule;
import com.tngtech.archunit.lang.EvaluationResult; import com.tngtech.archunit.lang.EvaluationResult;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.Task; import org.gradle.api.Task;
import org.gradle.api.Transformer; import org.gradle.api.Transformer;
import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.DirectoryProperty;
@ -49,6 +48,7 @@ import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.SkipWhenEmpty; import org.gradle.api.tasks.SkipWhenEmpty;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationException;
/** /**
* {@link Task} that checks for architecture problems. * {@link Task} that checks for architecture problems.
@ -86,7 +86,7 @@ public abstract class ArchitectureCheck extends DefaultTask {
File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile(); File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile();
writeViolationReport(violations, outputFile); writeViolationReport(violations, outputFile);
if (!violations.isEmpty()) { if (!violations.isEmpty()) {
throw new GradleException("Architecture check failed. See '" + outputFile + "' for details."); throw new VerificationException("Architecture check failed. See '" + outputFile + "' for details.");
} }
} }

4
buildSrc/src/main/java/org/springframework/boot/build/bom/CheckBom.java

@ -34,7 +34,6 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.Restriction; import org.apache.maven.artifact.versioning.Restriction;
import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.artifact.versioning.VersionRange;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.artifacts.dsl.DependencyHandler; import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.file.RegularFile; import org.gradle.api.file.RegularFile;
@ -44,6 +43,7 @@ import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationException;
import org.springframework.boot.build.bom.Library.Group; import org.springframework.boot.build.bom.Library.Group;
import org.springframework.boot.build.bom.Library.ImportedBom; import org.springframework.boot.build.bom.Library.ImportedBom;
@ -94,7 +94,7 @@ public abstract class CheckBom extends DefaultTask {
System.out.println(); System.out.println();
errors.forEach(System.out::println); errors.forEach(System.out::println);
System.out.println(); System.out.println();
throw new GradleException("Bom check failed. See previous output for details."); throw new VerificationException("Bom check failed. See previous output for details.");
} }
} }

6
buildSrc/src/main/java/org/springframework/boot/build/context/properties/CheckAdditionalSpringConfigurationMetadata.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2024 the original author or authors. * Copyright 2012-2025 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -31,7 +31,6 @@ import java.util.Map;
import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.gradle.api.GradleException;
import org.gradle.api.file.FileTree; import org.gradle.api.file.FileTree;
import org.gradle.api.file.RegularFileProperty; import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.InputFiles;
@ -40,6 +39,7 @@ import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.SourceTask; import org.gradle.api.tasks.SourceTask;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationException;
/** /**
* {@link SourceTask} that checks additional Spring configuration metadata files. * {@link SourceTask} that checks additional Spring configuration metadata files.
@ -70,7 +70,7 @@ public abstract class CheckAdditionalSpringConfigurationMetadata extends SourceT
File reportFile = getReportLocation().get().getAsFile(); File reportFile = getReportLocation().get().getAsFile();
Files.write(reportFile.toPath(), report, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); Files.write(reportFile.toPath(), report, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
if (report.hasProblems()) { if (report.hasProblems()) {
throw new GradleException( throw new VerificationException(
"Problems found in additional Spring configuration metadata. See " + reportFile + " for details."); "Problems found in additional Spring configuration metadata. See " + reportFile + " for details.");
} }
} }

6
buildSrc/src/main/java/org/springframework/boot/build/context/properties/CheckSpringConfigurationMetadata.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2024 the original author or authors. * Copyright 2012-2025 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -30,7 +30,6 @@ import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.file.RegularFileProperty; import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.ListProperty;
import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Input;
@ -40,6 +39,7 @@ import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.SourceTask; import org.gradle.api.tasks.SourceTask;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationException;
/** /**
* {@link SourceTask} that checks {@code spring-configuration-metadata.json} files. * {@link SourceTask} that checks {@code spring-configuration-metadata.json} files.
@ -70,7 +70,7 @@ public abstract class CheckSpringConfigurationMetadata extends DefaultTask {
File reportFile = getReportLocation().get().getAsFile(); File reportFile = getReportLocation().get().getAsFile();
Files.write(reportFile.toPath(), report, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING); Files.write(reportFile.toPath(), report, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
if (report.hasProblems()) { if (report.hasProblems()) {
throw new GradleException( throw new VerificationException(
"Problems found in Spring configuration metadata. See " + reportFile + " for details."); "Problems found in Spring configuration metadata. See " + reportFile + " for details.");
} }
} }

4
buildSrc/src/main/java/org/springframework/boot/build/springframework/CheckFactoriesFile.java

@ -31,7 +31,6 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
import org.gradle.api.DefaultTask; import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.Task; import org.gradle.api.Task;
import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.FileCollection; import org.gradle.api.file.FileCollection;
@ -43,6 +42,7 @@ import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.SkipWhenEmpty; import org.gradle.api.tasks.SkipWhenEmpty;
import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationException;
import org.gradle.language.base.plugins.LifecycleBasePlugin; import org.gradle.language.base.plugins.LifecycleBasePlugin;
import org.springframework.core.io.support.SpringFactoriesLoader; import org.springframework.core.io.support.SpringFactoriesLoader;
@ -112,7 +112,7 @@ public abstract class CheckFactoriesFile extends DefaultTask {
File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile(); File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile();
writeReport(factoriesFile, problems, outputFile); writeReport(factoriesFile, problems, outputFile);
if (!problems.isEmpty()) { if (!problems.isEmpty()) {
throw new GradleException("%s check failed. See '%s' for details".formatted(this.path, outputFile)); throw new VerificationException("%s check failed. See '%s' for details".formatted(this.path, outputFile));
} }
} }

Loading…
Cancel
Save