diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java index 4074af50cab..fe83fd9d0b2 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java @@ -19,6 +19,7 @@ package org.springframework.boot.build.bom; import java.io.File; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -27,6 +28,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.TreeMap; +import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.function.Predicate; import java.util.regex.Matcher; @@ -429,6 +431,13 @@ public class Library { Set resolve(); + default Configuration alignmentConfiguration(Project project, Collection dependencies) { + Configuration alignmentConfiguration = project.getConfigurations() + .detachedConfiguration(dependencies.toArray(new Dependency[0])); + alignmentConfiguration.getResolutionStrategy().cacheChangingModulesFor(0, TimeUnit.SECONDS); + return alignmentConfiguration; + } + } public static class BomAlignment { @@ -514,8 +523,7 @@ public class Library { private Map resolveAligningDependencies() { List dependencies = getAligningDependencies(); - Configuration alignmentConfiguration = this.project.getConfigurations() - .detachedConfiguration(dependencies.toArray(new Dependency[0])); + Configuration alignmentConfiguration = alignmentConfiguration(this.project, dependencies); Map versions = new HashMap<>(); ResolutionResult resolutionResult = alignmentConfiguration.getIncoming().getResolutionResult(); for (DependencyResult dependency : resolutionResult.getAllDependencies()) { @@ -627,8 +635,7 @@ public class Library { if (this.alignedVersions != null) { return this.alignedVersions; } - Configuration alignmentConfiguration = this.project.getConfigurations() - .detachedConfiguration(getAligningDependencies().toArray(new Dependency[0])); + Configuration alignmentConfiguration = alignmentConfiguration(this.project, getAligningDependencies()); Set files = alignmentConfiguration.resolve(); if (files.size() != 1) { throw new IllegalStateException(