Skip to content

Commit

Permalink
Stop calling getProject() when ExtractVersionConstraints is executing
Browse files Browse the repository at this point in the history
Closes gh-40550
  • Loading branch information
wilkinsona committed Apr 26, 2024
1 parent c139bdf commit 0757857
Showing 1 changed file with 17 additions and 12 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2023 the original author or authors.
* Copyright 2012-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -26,17 +26,20 @@
import java.util.TreeSet;

import org.gradle.api.DefaultTask;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.artifacts.ComponentMetadataDetails;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.DependencyConstraint;
import org.gradle.api.artifacts.DependencyConstraintMetadata;
import org.gradle.api.artifacts.DependencyConstraintSet;
import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.tasks.Internal;
import org.gradle.api.tasks.TaskAction;
import org.gradle.platform.base.Platform;

import org.springframework.boot.build.bom.BomExtension;
import org.springframework.boot.build.bom.BomPlugin;
import org.springframework.boot.build.bom.Library;

/**
Expand All @@ -55,7 +58,9 @@ public class ExtractVersionConstraints extends DefaultTask {

private final Set<VersionProperty> versionProperties = new TreeSet<>();

private final List<String> projectPaths = new ArrayList<>();
private final List<DependencyConstraintSet> dependencyConstraintSets = new ArrayList<>();

private final List<BomExtension> boms = new ArrayList<>();

public ExtractVersionConstraints() {
DependencyHandler dependencies = getProject().getDependencies();
Expand All @@ -68,7 +73,12 @@ public void enforcedPlatform(String projectPath) {
.add(getProject().getDependencies()
.enforcedPlatform(
getProject().getDependencies().project(Collections.singletonMap("path", projectPath))));
this.projectPaths.add(projectPath);
Project project = getProject().project(projectPath);
project.getPlugins().withType(BomPlugin.class).all((plugin) -> {
this.boms.add(project.getExtensions().getByType(BomExtension.class));
this.dependencyConstraintSets
.add(project.getConfigurations().getByName("apiElements").getAllDependencyConstraints());
});
}

@Internal
Expand All @@ -89,12 +99,9 @@ public Set<VersionProperty> getVersionProperties() {
@TaskAction
void extractVersionConstraints() {
this.configuration.resolve();
for (String projectPath : this.projectPaths) {
extractVersionProperties(projectPath);
for (DependencyConstraint constraint : getProject().project(projectPath)
.getConfigurations()
.getByName("apiElements")
.getAllDependencyConstraints()) {
this.boms.forEach(this::extractVersionProperties);
for (DependencyConstraintSet constraints : this.dependencyConstraintSets) {
for (DependencyConstraint constraint : constraints) {
this.versionConstraints.put(constraint.getGroup() + ":" + constraint.getName(),
constraint.getVersionConstraint().toString());
this.constrainedVersions.add(new ConstrainedVersion(constraint.getGroup(), constraint.getName(),
Expand All @@ -103,9 +110,7 @@ void extractVersionConstraints() {
}
}

private void extractVersionProperties(String projectPath) {
Object bom = getProject().project(projectPath).getExtensions().getByName("bom");
BomExtension bomExtension = (BomExtension) bom;
private void extractVersionProperties(BomExtension bomExtension) {
for (Library lib : bomExtension.getLibraries()) {
String versionProperty = lib.getVersionProperty();
if (versionProperty != null) {
Expand Down

0 comments on commit 0757857

Please sign in to comment.