Skip to content

Commit f953969

Browse files
committed
more
1 parent 0064fdd commit f953969

File tree

4 files changed

+49
-38
lines changed

4 files changed

+49
-38
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ private void setUpRuntimeConfiguration() {
253253
.getByName(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(mode)));
254254
});
255255
if (!isLegacyConfig(project)) {
256-
ConditionalDependencyResolver.resolve(project, mode);
256+
ConditionalDependencyResolver.resolve(project, mode, taskDependencyFactory);
257257
}
258258
}
259259
}

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

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.gradle.api.artifacts.ResolvedDependency;
2020
import org.gradle.api.attributes.Attribute;
2121
import org.gradle.api.attributes.AttributeContainer;
22+
import org.gradle.api.internal.tasks.TaskDependencyFactory;
2223
import org.gradle.api.provider.ListProperty;
2324
import org.jetbrains.annotations.NotNull;
2425

@@ -48,8 +49,8 @@ public static String getQuarkusConditionalDependencyAttributeValue() {
4849
return "on";
4950
}
5051

51-
public static void resolve(Project project, LaunchMode mode) {
52-
new ConditionalDependencyResolver(project, mode).resolve(
52+
public static void resolve(Project project, LaunchMode mode, TaskDependencyFactory taskDependencyFactory) {
53+
new ConditionalDependencyResolver(project, mode, taskDependencyFactory).resolve(
5354
project.getConfigurations().getByName(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(mode)),
5455
mode);
5556
}
@@ -59,12 +60,14 @@ public static void resolve(Project project, LaunchMode mode) {
5960
private final Map<ArtifactKey, ProcessedDependency> processedDeps = new HashMap<>();
6061
private final Map<ArtifactKey, ConditionalDependency> allConditionalDeps = new HashMap<>();
6162
private final List<ConditionalDependencyVariant> dependencyVariantQueue = new ArrayList<>();
62-
private final boolean devMode;
63+
private final LaunchMode mode;
64+
private final TaskDependencyFactory taskDependencyFactory;
6365

64-
private ConditionalDependencyResolver(Project project, LaunchMode mode) {
66+
private ConditionalDependencyResolver(Project project, LaunchMode mode, TaskDependencyFactory taskDependencyFactory) {
6567
this.project = project;
66-
this.devMode = mode == LaunchMode.DEVELOPMENT;
68+
this.mode = mode;
6769
this.quarkusDepAttr = getQuarkusConditionalDependencyAttribute(project.getName(), mode);
70+
this.taskDependencyFactory = taskDependencyFactory;
6871
}
6972

7073
private void resolve(Configuration baseConfig, LaunchMode mode) {
@@ -75,11 +78,9 @@ private void resolve(Configuration baseConfig, LaunchMode mode) {
7578
config -> {
7679
config.extendsFrom(baseConfig);
7780
config.attributes(this::selectConditionalAttribute);
78-
79-
System.out.println("resolveConditionalDeps " + project.getPath() + " for " + config.getName());
80-
ListProperty<Dependency> dependencyListProperty = project.getObjects().listProperty(Dependency.class);
81+
final ListProperty<Dependency> dependencyProperty = project.getObjects().listProperty(Dependency.class);
8182
final AtomicInteger invocations = new AtomicInteger();
82-
config.getDependencies().addAllLater(dependencyListProperty.value(project.provider(() -> {
83+
config.getDependencies().addAllLater(dependencyProperty.value(project.provider(() -> {
8384
if (invocations.getAndIncrement() == 0) {
8485
activateConditionalDeps(baseConfig);
8586
}
@@ -97,17 +98,20 @@ private void activateConditionalDeps(Configuration baseConfig) {
9798
var conditionalVariant = i.next();
9899
if (conditionalVariant.conditionalDep.isConditionSatisfied()) {
99100
satisfiedConditions = true;
100-
// TODO add
101-
System.out.println(
102-
"ConditionalDependencyResolver.activateConditionalDeps "
103-
+ conditionalVariant.parent.getExtensionId() + " -> "
104-
+ conditionalVariant.conditionalDep.artifact + ", satisfied="
105-
+ conditionalVariant.conditionalDep.isConditionSatisfied());
106101
i.remove();
107102

108103
project.getDependencies().getComponents().withModule(
109104
conditionalVariant.parent.getGroup() + ":" + conditionalVariant.parent.getName(),
110105
compDetails -> addConditionalDependencyVariant(compDetails, conditionalVariant));
106+
107+
// add the corresponding deployment variant
108+
project.getDependencies().getComponents().withModule(
109+
conditionalVariant.parent.getDeploymentGroup() + ":"
110+
+ conditionalVariant.parent.getDeploymentName(),
111+
compDetails -> DeploymentConfigurationResolver.addDeploymentVariant(
112+
DeploymentConfigurationResolver.getQuarkusDeploymentAttribute(project.getName(), mode),
113+
compDetails, getDeploymentDependency(conditionalVariant.conditionalDep.extension)));
114+
111115
}
112116
}
113117
if (!satisfiedConditions) {
@@ -200,6 +204,12 @@ private ConditionalDependency newConditionalDep(Dependency dep) {
200204
throw new RuntimeException(dep + " did not resolve to any artifacts");
201205
}
202206

207+
private Dependency getDeploymentDependency(ExtensionDependency<?> ext) {
208+
return ext.isProjectDependency()
209+
? DependencyUtils.createDeploymentProjectDependency((Project) ext.getDeploymentModule(), taskDependencyFactory)
210+
: DependencyUtils.createDeploymentDependency(project.getDependencies(), ext);
211+
}
212+
203213
private class ProcessedDependency {
204214
private final ExtensionDependency<?> extension;
205215

@@ -214,7 +224,7 @@ private void queueConditionalDeps() {
214224
for (var dep : extension.getConditionalDependencies()) {
215225
queueConditionalDependency(this, dep);
216226
}
217-
if (devMode) {
227+
if (mode == LaunchMode.DEVELOPMENT) {
218228
for (var dep : extension.getConditionalDevDependencies()) {
219229
queueConditionalDependency(this, dep);
220230
}

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

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import org.gradle.api.artifacts.ResolvedConfiguration;
1818
import org.gradle.api.artifacts.ResolvedDependency;
1919
import org.gradle.api.attributes.Attribute;
20+
import org.gradle.api.attributes.AttributeContainer;
2021
import org.gradle.api.internal.tasks.TaskDependencyFactory;
2122
import org.gradle.api.provider.ListProperty;
2223

@@ -61,7 +62,6 @@ private DeploymentConfigurationResolver(Project project, Configuration deploymen
6162
this.taskDependencyFactory = taskDependencyFactory;
6263
this.quarkusDepAttr = getQuarkusDeploymentAttribute(project.getName(), mode);
6364

64-
System.out.println("registerDeploymentConfiguration " + project.getPath() + " " + deploymentConfig.getName());
6565
final Configuration baseRuntimeConfig = project.getConfigurations()
6666
.getByName(ConditionalDependencyResolver.getConfigurationName(mode));
6767
deploymentConfig.setCanBeConsumed(false);
@@ -149,8 +149,6 @@ private Collection<Dependency> initDeploymentVariants(Map<ArtifactKey, Processed
149149
!allDeps.containsKey(
150150
ArtifactKey.of(processedDep.ext.getDeploymentGroup(), processedDep.ext.getDeploymentName(),
151151
ArtifactCoords.DEFAULT_CLASSIFIER, ArtifactCoords.TYPE_JAR))) {
152-
System.out.println(
153-
"Extension " + DependencyUtils.getKey(processedDep.dep) + ", direct=" + (processedDep.parent == null));
154152
if (processedDep.parent == null) {
155153
directDeploymentDeps.add(getDeploymentDependency(processedDep.ext));
156154
} else if (projectKeys.contains(
@@ -160,42 +158,46 @@ private Collection<Dependency> initDeploymentVariants(Map<ArtifactKey, Processed
160158
directDeploymentDeps.add(getDeploymentDependency(processedDep.ext));
161159
} else {
162160
project.getDependencies().getComponents().withModule(processedDep.parent.getModule().getId().getModule(),
163-
compDetails -> addDeploymentVariant(processedDep, compDetails));
161+
compDetails -> addDeploymentVariant(processedDep.ext, compDetails));
164162
}
165163
}
166164
}
167165
return directDeploymentDeps;
168166
}
169167

170-
private void addDeploymentVariant(ProcessedDependency processedDep, ComponentMetadataDetails compDetails) {
171-
compDetails.addVariant(quarkusDepAttr.getName(), "runtimeElements", variant -> {
172-
variant.attributes(attrs -> {
173-
attrs.attribute(quarkusDepAttr, getQuarkusDeploymentAttributeValue());
174-
System.out.println("Adding variant " + quarkusDepAttr.getName() + " of " + compDetails.getId());
175-
});
168+
private void addDeploymentVariant(ExtensionDependency<?> extDep, ComponentMetadataDetails compDetails) {
169+
addDeploymentVariant(quarkusDepAttr, compDetails, getDeploymentDependency(extDep));
170+
}
171+
172+
static void addDeploymentVariant(Attribute<String> attribute,
173+
ComponentMetadataDetails compDetails,
174+
Dependency deploymentDependency) {
175+
compDetails.addVariant(attribute.getName(), "runtimeElements", variant -> {
176+
variant.attributes(attrs -> selectDeploymentAttribute(attribute, attrs));
176177
variant.withDependencies(directDeps -> {
177178
boolean alreadyAdded = false;
178179
for (var directDep : directDeps) {
179-
if (directDep.getName().equals(processedDep.ext.getDeploymentName()) &&
180-
directDep.getGroup().equals(processedDep.ext.getDeploymentGroup())) {
180+
if (directDep.getName().equals(deploymentDependency.getName()) &&
181+
directDep.getGroup().equals(deploymentDependency.getGroup())) {
181182
alreadyAdded = true;
182183
break;
183184
}
184185
}
185186
if (!alreadyAdded) {
186-
directDeps.add(DependencyUtils
187-
.asDependencyNotation(getDeploymentDependency(processedDep.ext)));
187+
directDeps.add(DependencyUtils.asDependencyNotation(deploymentDependency));
188188
}
189189
});
190190
});
191191
}
192192

193+
static void selectDeploymentAttribute(Attribute<String> attr, AttributeContainer attrs) {
194+
attrs.attribute(attr, getQuarkusDeploymentAttributeValue());
195+
}
196+
193197
private Dependency getDeploymentDependency(ExtensionDependency<?> ext) {
194-
if (ext.isProjectDependency()) {
195-
return DependencyUtils.createDeploymentProjectDependency((Project) ext.getDeploymentModule(), "runtimeElements",
196-
taskDependencyFactory);
197-
}
198-
return DependencyUtils.createDeploymentDependency(project.getDependencies(), ext);
198+
return ext.isProjectDependency()
199+
? DependencyUtils.createDeploymentProjectDependency((Project) ext.getDeploymentModule(), taskDependencyFactory)
200+
: DependencyUtils.createDeploymentDependency(project.getDependencies(), ext);
199201
}
200202

201203
private boolean isWalkingFlagsOn(byte flags) {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,8 +381,7 @@ private static Dependency createDeploymentProjectDependency(DependencyHandler ha
381381
}
382382
}
383383

384-
public static Dependency createDeploymentProjectDependency(Project project, String configurationName,
385-
TaskDependencyFactory taskDependencyFactory) {
384+
public static Dependency createDeploymentProjectDependency(Project project, TaskDependencyFactory taskDependencyFactory) {
386385
return project.getDependencies().create(
387386
new DefaultProjectDependency((ProjectInternal) project, true, taskDependencyFactory));
388387
}

0 commit comments

Comments
 (0)