|
6 | 6 | import java.util.HashSet; |
7 | 7 | import java.util.LinkedHashSet; |
8 | 8 | import java.util.List; |
| 9 | +import java.util.Map; |
9 | 10 | import java.util.Set; |
10 | 11 | import java.util.stream.Collectors; |
11 | 12 |
|
@@ -228,32 +229,39 @@ private void setUpDeploymentConfiguration() { |
228 | 229 | configuration.setCanBeConsumed(false); |
229 | 230 | Configuration enforcedPlatforms = this.getPlatformConfiguration(); |
230 | 231 | configuration.extendsFrom(enforcedPlatforms); |
| 232 | + Map<String, Set<Dependency>> calculatedDependenciesByModeAndConfiguration = new HashMap<>(); |
231 | 233 | ListProperty<Dependency> dependencyListProperty = project.getObjects().listProperty(Dependency.class); |
232 | 234 | 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 | + } |
242 | 247 | } |
243 | | - } |
244 | 248 |
|
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 | + } |
252 | 256 |
|
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); |
255 | 264 | } |
256 | | - return deploymentDependencies; |
257 | 265 | }))); |
258 | 266 | }); |
259 | 267 | } |
|
0 commit comments