Skip to content

Commit 330abb5

Browse files
committed
Merge branch '3.2.x' into 3.3.x
Closes gh-41342
2 parents f48413a + cb9135b commit 330abb5

File tree

2 files changed

+65
-22
lines changed
  • buildSrc/src/main/java/org/springframework/boot/build/bom
  • spring-boot-project/spring-boot-dependencies

2 files changed

+65
-22
lines changed

buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.gradle.api.Project;
3434
import org.gradle.api.artifacts.Configuration;
3535
import org.gradle.api.artifacts.Dependency;
36-
import org.gradle.api.artifacts.dsl.DependencyHandler;
3736
import org.gradle.api.artifacts.result.DependencyResult;
3837

3938
import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
@@ -398,17 +397,10 @@ public static class VersionAlignment {
398397
}
399398

400399
public Set<String> resolve() {
401-
if (this.managedBy == null) {
402-
throw new IllegalStateException("Version alignment without managedBy is not supported");
403-
}
404400
if (this.alignedVersions != null) {
405401
return this.alignedVersions;
406402
}
407-
Library managingLibrary = this.libraries.stream()
408-
.filter((candidate) -> this.managedBy.equals(candidate.getName()))
409-
.findFirst()
410-
.orElseThrow(() -> new IllegalStateException("Managing library '" + this.managedBy + "' not found."));
411-
Map<String, String> versions = resolveAligningDependencies(managingLibrary);
403+
Map<String, String> versions = resolveAligningDependencies();
412404
Set<String> versionsInLibrary = new HashSet<>();
413405
for (Group group : this.groups) {
414406
for (Module module : group.getModules()) {
@@ -428,18 +420,8 @@ public Set<String> resolve() {
428420
return this.alignedVersions;
429421
}
430422

431-
private Map<String, String> resolveAligningDependencies(Library manager) {
432-
DependencyHandler dependencyHandler = this.project.getDependencies();
433-
List<Dependency> boms = manager.getGroups()
434-
.stream()
435-
.flatMap((group) -> group.getBoms()
436-
.stream()
437-
.map((bom) -> dependencyHandler
438-
.platform(group.getId() + ":" + bom + ":" + manager.getVersion().getVersion())))
439-
.toList();
440-
List<Dependency> dependencies = new ArrayList<>();
441-
dependencies.addAll(boms);
442-
dependencies.add(dependencyHandler.create(this.from));
423+
private Map<String, String> resolveAligningDependencies() {
424+
List<Dependency> dependencies = getAligningDependencies();
443425
Configuration alignmentConfiguration = this.project.getConfigurations()
444426
.detachedConfiguration(dependencies.toArray(new Dependency[0]));
445427
Map<String, String> versions = new HashMap<>();
@@ -452,6 +434,58 @@ private Map<String, String> resolveAligningDependencies(Library manager) {
452434
return versions;
453435
}
454436

437+
private List<Dependency> getAligningDependencies() {
438+
if (this.managedBy == null) {
439+
Library fromLibrary = findFromLibrary();
440+
return List
441+
.of(this.project.getDependencies().create(this.from + ":" + fromLibrary.getVersion().getVersion()));
442+
}
443+
else {
444+
Library managingLibrary = findManagingLibrary();
445+
List<Dependency> boms = getBomDependencies(managingLibrary);
446+
List<Dependency> dependencies = new ArrayList<>();
447+
dependencies.addAll(boms);
448+
dependencies.add(this.project.getDependencies().create(this.from));
449+
return dependencies;
450+
}
451+
}
452+
453+
private Library findFromLibrary() {
454+
for (Library library : this.libraries) {
455+
for (Group group : library.getGroups()) {
456+
for (Module module : group.getModules()) {
457+
if (this.from.equals(group.getId() + ":" + module.getName())) {
458+
return library;
459+
}
460+
}
461+
}
462+
}
463+
return null;
464+
}
465+
466+
private Library findManagingLibrary() {
467+
if (this.managedBy == null) {
468+
return null;
469+
}
470+
return this.libraries.stream()
471+
.filter((candidate) -> this.managedBy.equals(candidate.getName()))
472+
.findFirst()
473+
.orElseThrow(() -> new IllegalStateException("Managing library '" + this.managedBy + "' not found."));
474+
}
475+
476+
private List<Dependency> getBomDependencies(Library manager) {
477+
if (manager == null) {
478+
return Collections.emptyList();
479+
}
480+
return manager.getGroups()
481+
.stream()
482+
.flatMap((group) -> group.getBoms()
483+
.stream()
484+
.map((bom) -> this.project.getDependencies()
485+
.platform(group.getId() + ":" + bom + ":" + manager.getVersion().getVersion())))
486+
.toList();
487+
}
488+
455489
String getFrom() {
456490
return this.from;
457491
}
@@ -462,7 +496,11 @@ String getManagedBy() {
462496

463497
@Override
464498
public String toString() {
465-
return "version from dependencies of " + this.from + " that is managed by " + this.managedBy;
499+
String result = "version from dependencies of " + this.from;
500+
if (this.managedBy != null) {
501+
result += " that is managed by " + this.managedBy;
502+
}
503+
return result;
466504
}
467505

468506
}

spring-boot-project/spring-boot-dependencies/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,11 @@ bom {
446446
startsWith(["2018-", "2019-", "2020-", "2021-", "230521-"])
447447
because "These are snapshots that we don't want to see"
448448
}
449+
alignWith {
450+
version {
451+
from "org.springframework.graphql:spring-graphql"
452+
}
453+
}
449454
group("com.graphql-java") {
450455
modules = [
451456
"graphql-java"

0 commit comments

Comments
 (0)