@@ -169,6 +169,7 @@ private ResolvedDependencyBuilder getProjectArtifact(DefaultProjectDescriptor pr
169169 collectDestinationDirs (module .getMainSources ().getSourceDirs (), paths );
170170 collectDestinationDirs (module .getMainSources ().getResourceDirs (), paths );
171171 appArtifact .setResolvedPaths (paths .build ());
172+ appArtifact .setReloadable ().setWorkspaceModule ();
172173 } else {
173174 appArtifact .setResolvedPaths (PathList .empty ());
174175 }
@@ -287,7 +288,8 @@ private static void collectDependencies(
287288 artifact .type );
288289 if (!isDependency (artifact )
289290 || modelBuilder .getDependency (artifactKey ) != null
290- || modelBuilder .getApplicationArtifact ().getKey ().equals (artifactKey )) {
291+ // test fixtures depend on the default jar artifact, which could be the root one
292+ || isApplicationRoot (modelBuilder , artifactKey )) {
291293 continue ;
292294 }
293295
@@ -341,6 +343,10 @@ private static void collectDependencies(
341343 }
342344 }
343345
346+ private static boolean isApplicationRoot (ApplicationModelBuilder modelBuilder , ArtifactKey artifactKey ) {
347+ return modelBuilder .getApplicationArtifact ().getKey ().equals (artifactKey );
348+ }
349+
344350 private static ModuleVersionIdentifier getModuleVersion (ResolvedDependencyResult resolvedDependency ) {
345351 return Objects .requireNonNull (resolvedDependency .getSelected ().getModuleVersion ());
346352 }
@@ -353,10 +359,10 @@ private static boolean isDependency(QuarkusResolvedArtifact a) {
353359
354360 private static void collectExtensionDependencies (QuarkusResolvedClasspath classpath , ApplicationModelBuilder modelBuilder ) {
355361 Map <ComponentIdentifier , List <QuarkusResolvedArtifact >> artifacts = classpath .resolvedArtifactsByComponentIdentifier ();
356- Set <ArtifactKey > alreadyVisited = new HashSet <>();
362+ final Set <ModuleVersionIdentifier > processedModules = new HashSet <>();
357363 classpath .getRoot ().get ().getDependencies ().forEach (d -> {
358364 if (d instanceof ResolvedDependencyResult result ) {
359- collectExtensionDependencies (result , modelBuilder , artifacts , alreadyVisited , false );
365+ collectExtensionDependencies (result , modelBuilder , artifacts , processedModules , false );
360366 }
361367 });
362368 }
@@ -365,23 +371,30 @@ private static void collectExtensionDependencies(
365371 ResolvedDependencyResult resolvedDependency ,
366372 ApplicationModelBuilder modelBuilder ,
367373 Map <ComponentIdentifier , List <QuarkusResolvedArtifact >> resolvedArtifacts ,
368- Set <ArtifactKey > alreadyVisited ,
374+ Set <ModuleVersionIdentifier > processedModules ,
369375 boolean clearReloadableFlag ) {
376+ final ModuleVersionIdentifier moduleId = getModuleVersion (resolvedDependency );
377+ if (!processedModules .add (moduleId )) {
378+ return ;
379+ }
370380 List <QuarkusResolvedArtifact > artifacts = getResolvedModuleArtifacts (resolvedArtifacts ,
371381 resolvedDependency .getSelected ().getId ());
372382 if (artifacts .isEmpty ()) {
373383 return ;
374384 }
375385
376386 final ModuleVersionIdentifier moduleVersionIdentifier = getModuleVersion (resolvedDependency );
387+ boolean clearReloadableFlagChildren = clearReloadableFlag ;
377388 for (QuarkusResolvedArtifact artifact : artifacts ) {
378389
379390 String classifier = resolveClassifier (moduleVersionIdentifier , artifact .file );
380391 ArtifactKey artifactKey = ArtifactKey .of (moduleVersionIdentifier .getGroup (), moduleVersionIdentifier .getName (),
381392 classifier ,
382393 artifact .type );
383- if (!alreadyVisited .add (artifactKey )) {
384- return ;
394+ if (!isDependency (artifact )
395+ // test fixtures depend on the default jar artifact, which could be the root one
396+ || isApplicationRoot (modelBuilder , artifactKey )) {
397+ continue ;
385398 }
386399
387400 ResolvedDependencyBuilder dep = modelBuilder .getDependency (artifactKey );
@@ -393,13 +406,15 @@ private static void collectExtensionDependencies(
393406 dep .setDeploymentCp ();
394407 if (clearReloadableFlag ) {
395408 dep .clearFlag (DependencyFlags .RELOADABLE );
409+ } else if (!dep .isReloadable ()) {
410+ clearReloadableFlagChildren = true ;
396411 }
397- clearReloadableFlag |= !dep .isReloadable ();
398412 }
399413
400414 for (DependencyResult d : resolvedDependency .getSelected ().getDependencies ()) {
401415 if (d instanceof ResolvedDependencyResult result ) {
402- collectExtensionDependencies (result , modelBuilder , resolvedArtifacts , alreadyVisited , clearReloadableFlag );
416+ collectExtensionDependencies (result , modelBuilder , resolvedArtifacts , processedModules ,
417+ clearReloadableFlagChildren );
403418 }
404419 }
405420 }
0 commit comments