Skip to content

Commit 805c3f3

Browse files
authored
Merge pull request #45081 from cdsap/avoid_multiple_resolution
Avoiding calculate conditional dependencies again for the same configuration, model and project
2 parents 42cbc8c + c57799c commit 805c3f3

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

devtools/gradle/gradle-model/src/main/java/io/quarkus/gradle/dependency/ApplicationDeploymentClasspathBuilder.java

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.HashSet;
77
import java.util.LinkedHashSet;
88
import java.util.List;
9+
import java.util.Map;
910
import java.util.Set;
1011
import java.util.stream.Collectors;
1112

@@ -228,32 +229,39 @@ private void setUpDeploymentConfiguration() {
228229
configuration.setCanBeConsumed(false);
229230
Configuration enforcedPlatforms = this.getPlatformConfiguration();
230231
configuration.extendsFrom(enforcedPlatforms);
232+
Map<String, Set<Dependency>> calculatedDependenciesByModeAndConfiguration = new HashMap<>();
231233
ListProperty<Dependency> dependencyListProperty = project.getObjects().listProperty(Dependency.class);
232234
configuration.getDependencies().addAllLater(dependencyListProperty.value(project.provider(() -> {
233-
ConditionalDependenciesEnabler cdEnabler = new ConditionalDependenciesEnabler(project, mode,
234-
enforcedPlatforms);
235-
final Collection<ExtensionDependency<?>> allExtensions = cdEnabler.getAllExtensions();
236-
Set<ExtensionDependency<?>> extensions = collectFirstMetQuarkusExtensions(getRawRuntimeConfiguration(),
237-
allExtensions);
238-
// Add conditional extensions
239-
for (ExtensionDependency<?> knownExtension : allExtensions) {
240-
if (knownExtension.isConditional()) {
241-
extensions.add(knownExtension);
235+
String key = String.format("%s%s%s", mode, configuration.getName(), project.getName());
236+
if (!calculatedDependenciesByModeAndConfiguration.containsKey(key)) {
237+
ConditionalDependenciesEnabler cdEnabler = new ConditionalDependenciesEnabler(project, mode,
238+
enforcedPlatforms);
239+
final Collection<ExtensionDependency<?>> allExtensions = cdEnabler.getAllExtensions();
240+
Set<ExtensionDependency<?>> extensions = collectFirstMetQuarkusExtensions(getRawRuntimeConfiguration(),
241+
allExtensions);
242+
// Add conditional extensions
243+
for (ExtensionDependency<?> knownExtension : allExtensions) {
244+
if (knownExtension.isConditional()) {
245+
extensions.add(knownExtension);
246+
}
242247
}
243-
}
244248

245-
final Set<ModuleVersionIdentifier> alreadyProcessed = new HashSet<>(extensions.size());
246-
final DependencyHandler dependencies = project.getDependencies();
247-
final Set<Dependency> deploymentDependencies = new HashSet<>();
248-
for (ExtensionDependency<?> extension : extensions) {
249-
if (!alreadyProcessed.add(extension.getExtensionId())) {
250-
continue;
251-
}
249+
final Set<ModuleVersionIdentifier> alreadyProcessed = new HashSet<>(extensions.size());
250+
final DependencyHandler dependencies = project.getDependencies();
251+
final Set<Dependency> deploymentDependencies = new HashSet<>();
252+
for (ExtensionDependency<?> extension : extensions) {
253+
if (!alreadyProcessed.add(extension.getExtensionId())) {
254+
continue;
255+
}
252256

253-
deploymentDependencies.add(
254-
DependencyUtils.createDeploymentDependency(dependencies, extension));
257+
deploymentDependencies.add(
258+
DependencyUtils.createDeploymentDependency(dependencies, extension));
259+
}
260+
calculatedDependenciesByModeAndConfiguration.put(key, deploymentDependencies);
261+
return deploymentDependencies;
262+
} else {
263+
return calculatedDependenciesByModeAndConfiguration.get(key);
255264
}
256-
return deploymentDependencies;
257265
})));
258266
});
259267
}

0 commit comments

Comments
 (0)