1919import org .gradle .api .artifacts .ResolvedDependency ;
2020import org .gradle .api .attributes .Attribute ;
2121import org .gradle .api .attributes .AttributeContainer ;
22+ import org .gradle .api .internal .tasks .TaskDependencyFactory ;
2223import org .gradle .api .provider .ListProperty ;
2324import 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 }
0 commit comments