From 45b8a0118a841cc97675b30beb13d06afefb1c4c Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 16 Sep 2026 15:04:44 -0700 Subject: [PATCH] Fix checklinks task Closes gh-51790 --- .../boot/build/bom/BomPlugin.java | 14 +++++++++----- .../boot/build/bom/CheckLinks.java | 16 ++++++++++------ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java index e39b5348081..69a043b1da0 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomPlugin.java @@ -26,6 +26,7 @@ import groovy.util.Node; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; +import org.gradle.api.file.RegularFileProperty; import org.gradle.api.plugins.JavaPlatformExtension; import org.gradle.api.plugins.JavaPlatformPlugin; import org.gradle.api.plugins.PluginContainer; @@ -63,21 +64,24 @@ public class BomPlugin implements Plugin { TaskProvider createResolvedBom = project.getTasks() .register("createResolvedBom", CreateResolvedBom.class, bom); TaskProvider checkBom = project.getTasks().register("bomrCheck", CheckBom.class, bom); - checkBom.configure( - (task) -> task.getResolvedBomFile().set(createResolvedBom.flatMap(CreateResolvedBom::getOutputFile))); + checkBom.configure((task) -> setResolvedBom(task.getResolvedBomFile(), createResolvedBom)); + TaskProvider checkLinks = project.getTasks().register("checkLinks", CheckLinks.class, bom); + checkLinks.configure((task) -> setResolvedBom(task.getResolvedBomFile(), createResolvedBom)); Configuration resolvedBom = project.getConfigurations().create("resolvedBom"); project.getTasks().named("check").configure((check) -> check.dependsOn(checkBom)); project.getTasks().register("bomrUpgrade", UpgradeBom.class, bom); project.getTasks().register("moveToSnapshots", MoveToSnapshots.class, bom); - project.getTasks() - .register("checkLinks", CheckLinks.class, bom, resolvedBom) - .configure((task) -> task.dependsOn(resolvedBom)); project.getArtifacts() .add(resolvedBom.getName(), createResolvedBom.map(CreateResolvedBom::getOutputFile), (artifact) -> artifact.builtBy(createResolvedBom)); new PublishingCustomizer(project, bom).customize(); } + private void setResolvedBom(RegularFileProperty resolvedBomFile, + TaskProvider createResolvedBom) { + resolvedBomFile.set(createResolvedBom.flatMap(CreateResolvedBom::getOutputFile)); + } + private void createApiEnforcedConfiguration(Project project) { Configuration apiEnforced = project.getConfigurations() .create(API_ENFORCED_CONFIGURATION_NAME, (configuration) -> { diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/CheckLinks.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/CheckLinks.java index 894df5a61c6..5e602e15695 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/CheckLinks.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/CheckLinks.java @@ -25,7 +25,10 @@ import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.apache.hc.client5.http.impl.classic.HttpClients; import org.gradle.api.DefaultTask; -import org.gradle.api.artifacts.Configuration; +import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.tasks.InputFile; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; import org.gradle.internal.impldep.org.apache.http.client.config.CookieSpecs; @@ -52,14 +55,15 @@ public abstract class CheckLinks extends DefaultTask { private final BomExtension bom; - private final Configuration resolvedBom; - @Inject - public CheckLinks(BomExtension bom, Configuration resolvedBom) { + public CheckLinks(BomExtension bom) { this.bom = bom; - this.resolvedBom = resolvedBom; } + @InputFile + @PathSensitive(PathSensitivity.RELATIVE) + public abstract RegularFileProperty getResolvedBomFile(); + @TaskAction void check() { RequestConfig config = RequestConfig.custom().setCookieSpec(CookieSpecs.IGNORE_COOKIES).build(); @@ -73,7 +77,7 @@ public abstract class CheckLinks extends DefaultTask { } private void check(RestClient restClient, Library library) { - ResolvedBom resolvedBom = ResolvedBom.readFrom(this.resolvedBom.getSingleFile()); + ResolvedBom resolvedBom = ResolvedBom.readFrom(getResolvedBomFile().get().getAsFile()); ResolvedLibrary resolvedLibrary = resolvedBom.library(library); DependencyVersion libraryVersion = library.getVersion(); String libraryName = library.getName();