diff --git a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java index 5b450e79f90..2eefe89e1a1 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -248,8 +249,8 @@ public class BomExtension { public void prohibit(Action action) { ProhibitedHandler handler = new ProhibitedHandler(); action.execute(handler); - this.prohibitedVersions.add( - new ProhibitedVersion(handler.versionRange, handler.endsWith, handler.contains, handler.reason)); + this.prohibitedVersions.add(new ProhibitedVersion(handler.versionRange, handler.startsWith, + handler.endsWith, handler.contains, handler.reason)); } public void dependencyVersions(Action action) { @@ -273,9 +274,11 @@ public class BomExtension { private String reason; - private String endsWith; + private final List startsWith = new ArrayList<>(); - private String contains; + private final List endsWith = new ArrayList<>(); + + private final List contains = new ArrayList<>(); private VersionRange versionRange; @@ -288,12 +291,28 @@ public class BomExtension { } } + public void startsWith(String startsWith) { + this.startsWith.add(startsWith); + } + + public void startsWith(Collection startsWith) { + this.startsWith.addAll(startsWith); + } + public void endsWith(String endsWith) { - this.endsWith = endsWith; + this.endsWith.add(endsWith); + } + + public void endsWith(Collection endsWith) { + this.endsWith.addAll(endsWith); } public void contains(String contains) { - this.contains = contains; + this.contains.add(contains); + } + + public void contains(List contains) { + this.contains.addAll(contains); } public void because(String because) { 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 aa9ca236a68..a7a9d8a83ab 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 @@ -104,14 +104,18 @@ public class Library { private final VersionRange range; - private final String endsWith; + private final List startsWith; - private final String contains; + private final List endsWith; + + private final List contains; private final String reason; - public ProhibitedVersion(VersionRange range, String endsWith, String contains, String reason) { + public ProhibitedVersion(VersionRange range, List startsWith, List endsWith, + List contains, String reason) { this.range = range; + this.startsWith = startsWith; this.endsWith = endsWith; this.contains = contains; this.reason = reason; @@ -121,11 +125,15 @@ public class Library { return this.range; } - public String getEndsWith() { + public List getStartsWith() { + return this.startsWith; + } + + public List getEndsWith() { return this.endsWith; } - public String getContains() { + public List getContains() { return this.contains; } 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 a02d06933a7..27f3aa9c6f0 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 @@ -167,21 +167,26 @@ public final class InteractiveUpgradeResolver implements UpgradeResolver { } private boolean isPermitted(DependencyVersion dependencyVersion, List prohibitedVersions) { - if (prohibitedVersions.isEmpty()) { - return true; - } for (ProhibitedVersion prohibitedVersion : prohibitedVersions) { + String dependencyVersionToString = dependencyVersion.toString(); if (prohibitedVersion.getRange() != null && prohibitedVersion.getRange() - .containsVersion(new DefaultArtifactVersion(dependencyVersion.toString()))) { + .containsVersion(new DefaultArtifactVersion(dependencyVersionToString))) { return false; } - if (prohibitedVersion.getEndsWith() != null - && dependencyVersion.toString().endsWith(prohibitedVersion.getEndsWith())) { - return false; + for (String startsWith : prohibitedVersion.getStartsWith()) { + if (dependencyVersionToString.startsWith(startsWith)) { + return false; + } } - if (prohibitedVersion.getContains() != null - && dependencyVersion.toString().contains(prohibitedVersion.getContains())) { - return false; + for (String endsWith : prohibitedVersion.getEndsWith()) { + if (dependencyVersionToString.endsWith(endsWith)) { + return false; + } + } + for (String contains : prohibitedVersion.getContains()) { + if (dependencyVersionToString.contains(contains)) { + return false; + } } } return true; diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index f5a70334412..0c18279d846 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -1362,13 +1362,7 @@ bom { endsWith ".jre8-preview" } prohibit { - contains ".jre11" - } - prohibit { - contains ".jre16" - } - prohibit { - contains ".jre17" + contains([".jre11", ".jre16", ".jre17"]) } group("com.microsoft.sqlserver") { modules = [