commit
30ba937aef
|
@ -33,7 +33,6 @@ import org.apache.maven.artifact.versioning.VersionRange;
|
|||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.artifacts.Dependency;
|
||||
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
||||
import org.gradle.api.artifacts.result.DependencyResult;
|
||||
|
||||
import org.springframework.boot.build.bom.bomr.version.DependencyVersion;
|
||||
|
@ -398,17 +397,10 @@ public class Library {
|
|||
}
|
||||
|
||||
public Set<String> resolve() {
|
||||
if (this.managedBy == null) {
|
||||
throw new IllegalStateException("Version alignment without managedBy is not supported");
|
||||
}
|
||||
if (this.alignedVersions != null) {
|
||||
return this.alignedVersions;
|
||||
}
|
||||
Library managingLibrary = this.libraries.stream()
|
||||
.filter((candidate) -> this.managedBy.equals(candidate.getName()))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new IllegalStateException("Managing library '" + this.managedBy + "' not found."));
|
||||
Map<String, String> versions = resolveAligningDependencies(managingLibrary);
|
||||
Map<String, String> versions = resolveAligningDependencies();
|
||||
Set<String> versionsInLibrary = new HashSet<>();
|
||||
for (Group group : this.groups) {
|
||||
for (Module module : group.getModules()) {
|
||||
|
@ -428,18 +420,8 @@ public class Library {
|
|||
return this.alignedVersions;
|
||||
}
|
||||
|
||||
private Map<String, String> resolveAligningDependencies(Library manager) {
|
||||
DependencyHandler dependencyHandler = this.project.getDependencies();
|
||||
List<Dependency> boms = manager.getGroups()
|
||||
.stream()
|
||||
.flatMap((group) -> group.getBoms()
|
||||
.stream()
|
||||
.map((bom) -> dependencyHandler
|
||||
.platform(group.getId() + ":" + bom + ":" + manager.getVersion().getVersion())))
|
||||
.toList();
|
||||
List<Dependency> dependencies = new ArrayList<>();
|
||||
dependencies.addAll(boms);
|
||||
dependencies.add(dependencyHandler.create(this.from));
|
||||
private Map<String, String> resolveAligningDependencies() {
|
||||
List<Dependency> dependencies = getAligningDependencies();
|
||||
Configuration alignmentConfiguration = this.project.getConfigurations()
|
||||
.detachedConfiguration(dependencies.toArray(new Dependency[0]));
|
||||
Map<String, String> versions = new HashMap<>();
|
||||
|
@ -452,6 +434,58 @@ public class Library {
|
|||
return versions;
|
||||
}
|
||||
|
||||
private List<Dependency> getAligningDependencies() {
|
||||
if (this.managedBy == null) {
|
||||
Library fromLibrary = findFromLibrary();
|
||||
return List
|
||||
.of(this.project.getDependencies().create(this.from + ":" + fromLibrary.getVersion().getVersion()));
|
||||
}
|
||||
else {
|
||||
Library managingLibrary = findManagingLibrary();
|
||||
List<Dependency> boms = getBomDependencies(managingLibrary);
|
||||
List<Dependency> dependencies = new ArrayList<>();
|
||||
dependencies.addAll(boms);
|
||||
dependencies.add(this.project.getDependencies().create(this.from));
|
||||
return dependencies;
|
||||
}
|
||||
}
|
||||
|
||||
private Library findFromLibrary() {
|
||||
for (Library library : this.libraries) {
|
||||
for (Group group : library.getGroups()) {
|
||||
for (Module module : group.getModules()) {
|
||||
if (this.from.equals(group.getId() + ":" + module.getName())) {
|
||||
return library;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private Library findManagingLibrary() {
|
||||
if (this.managedBy == null) {
|
||||
return null;
|
||||
}
|
||||
return this.libraries.stream()
|
||||
.filter((candidate) -> this.managedBy.equals(candidate.getName()))
|
||||
.findFirst()
|
||||
.orElseThrow(() -> new IllegalStateException("Managing library '" + this.managedBy + "' not found."));
|
||||
}
|
||||
|
||||
private List<Dependency> getBomDependencies(Library manager) {
|
||||
if (manager == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return manager.getGroups()
|
||||
.stream()
|
||||
.flatMap((group) -> group.getBoms()
|
||||
.stream()
|
||||
.map((bom) -> this.project.getDependencies()
|
||||
.platform(group.getId() + ":" + bom + ":" + manager.getVersion().getVersion())))
|
||||
.toList();
|
||||
}
|
||||
|
||||
String getFrom() {
|
||||
return this.from;
|
||||
}
|
||||
|
@ -462,7 +496,11 @@ public class Library {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "version from dependencies of " + this.from + " that is managed by " + this.managedBy;
|
||||
String result = "version from dependencies of " + this.from;
|
||||
if (this.managedBy != null) {
|
||||
result += " that is managed by " + this.managedBy;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -446,6 +446,11 @@ bom {
|
|||
startsWith(["2018-", "2019-", "2020-", "2021-", "230521-"])
|
||||
because "These are snapshots that we don't want to see"
|
||||
}
|
||||
alignWith {
|
||||
version {
|
||||
from "org.springframework.graphql:spring-graphql"
|
||||
}
|
||||
}
|
||||
group("com.graphql-java") {
|
||||
modules = [
|
||||
"graphql-java"
|
||||
|
|
Loading…
Reference in New Issue