diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/InteractiveUpgradeResolver.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/InteractiveUpgradeResolver.java index cb9273100e3..d56525412b6 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/InteractiveUpgradeResolver.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/InteractiveUpgradeResolver.java @@ -86,13 +86,12 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { private List getVersionOptions(Library library, Map libraries) { if (library.getVersion().getVersionAlignment() != null) { - VersionOption alignedVersionOption = alignedVersionOption(library, libraries); - if (!isPermitted(alignedVersionOption.version, library.getProhibitedVersions())) { - throw new InvalidUserDataException("Version alignment failed. Version " + alignedVersionOption.version - + " from " + library.getName() + " is prohibited"); - } - return Collections.singletonList(alignedVersionOption); + return determineAlignedVersionOption(library, libraries); } + return determineResolvedVersionOptions(library); + } + + private List determineResolvedVersionOptions(Library library) { Map> moduleVersions = new LinkedHashMap<>(); DependencyVersion libraryVersion = library.getVersion().getVersion(); for (Group group : library.getGroups()) { @@ -120,6 +119,18 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { .collect(Collectors.toList()); } + private List determineAlignedVersionOption(Library library, Map libraries) { + VersionOption alignedVersionOption = alignedVersionOption(library, libraries); + if (alignedVersionOption == null) { + return Collections.emptyList(); + } + if (!isPermitted(alignedVersionOption.version, library.getProhibitedVersions())) { + throw new InvalidUserDataException("Version alignment failed. Version " + alignedVersionOption.version + + " from " + library.getName() + " is prohibited"); + } + return Collections.singletonList(alignedVersionOption); + } + private VersionOption alignedVersionOption(Library library, Map libraries) { VersionAlignment versionAlignment = library.getVersion().getVersionAlignment(); Library alignmentLibrary = libraries.get(versionAlignment.getLibraryName()); @@ -148,8 +159,9 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { throw new InvalidUserDataException("Cannot align with library '" + versionAlignment.getLibraryName() + "' as it uses multiple different versions of this library's modules"); } - String requiredVersion = versions.iterator().next(); - return new AlignedVersionOption(DependencyVersion.parse(requiredVersion), alignmentLibrary); + DependencyVersion version = DependencyVersion.parse(versions.iterator().next()); + return library.getVersion().getVersion().equals(version) ? null + : new AlignedVersionOption(version, alignmentLibrary); } private boolean isPermitted(DependencyVersion dependencyVersion, List prohibitedVersions) {