{"record":{"id":"a7672b42176d5512","repo":"quarkusio/quarkus","slug":"failed-to-inject-extension-deployment-dependencies","errorCode":null,"errorMessage":"Failed to inject extension deployment dependencies for ${appArtifact}","messagePattern":"Failed to inject extension deployment dependencies for (.+?)","errorType":"exception","errorClass":"AppModelResolverException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/BootstrapAppModelResolver.java","lineNumber":427,"sourceCode":"            } else {\n                ApplicationDependencyResolver.newInstance()\n                        .setArtifactResolver(mvn)\n                        .setApplicationModelBuilder(appBuilder)\n                        .setCollectReloadableModules(collectReloadableDeps && reloadableModules.isEmpty())\n                        .setCollectCompileOnly(filteredProvidedDeps)\n                        .setDependencyLogging(depLogConfig)\n                        .setRuntimeModelOnly(runtimeModelOnly)\n                        .setDevMode(devmode)\n                        .setManagedDependencies(managedDeps)\n                        .resolve(collectRtDepsRequest);\n            }\n            if (logTime) {\n                System.err.println(\n                        \"Application model resolved in \" + (System.currentTimeMillis() - start) + \"ms, legacy=\"\n                                + legacyModelResolver);\n            }\n        } catch (BootstrapDependencyProcessingException e) {\n            throw new AppModelResolverException(\n                    \"Failed to inject extension deployment dependencies for \" + appArtifact.toCompactCoords(), e);\n        }\n\n        return appBuilder.build();\n    }\n\n    private io.quarkus.maven.dependency.ResolvedDependencyBuilder resolve(ArtifactCoords coords, Artifact artifact,\n            List<RemoteRepository> aggregatedRepos) throws BootstrapMavenException {\n\n        final ResolvedDependencyBuilder depBuilder;\n        if (ResolvedDependencyBuilder.class.isAssignableFrom(coords.getClass())) {\n            depBuilder = (ResolvedDependencyBuilder) coords;\n        } else {\n            depBuilder = ResolvedDependencyBuilder.newInstance().setCoords(coords);\n            if (coords instanceof ResolvedDependency resolved) {\n                depBuilder.setResolvedPaths(resolved.getResolvedPaths());\n            }\n        }","sourceCodeStart":409,"sourceCodeEnd":445,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/BootstrapAppModelResolver.java#L409-L445","documentation":"After resolving the dependency graph, buildAppModel invokes the extension dependency injection machinery to add extension deployment (build-time) artifacts to the application model. If a BootstrapDependencyProcessingException occurs during that injection, it is wrapped in this AppModelResolverException identifying the application artifact.","triggerScenarios":"buildAppModel (called from resolveModel/doResolveModel) catches BootstrapDependencyProcessingException thrown while injecting deployment dependencies of Quarkus extensions into the app model.","commonSituations":"A broken or incompatible extension on the classpath (missing deployment artifact in the repository); corrupted local Maven cache; an extension descriptor (quarkus-extension.properties) referencing a deployment artifact that cannot be resolved.","solutions":["Read the wrapped cause `e` to find which extension's deployment dependency failed.","Run `mvn -U` (force update) or clear the offending artifact from ~/.m2/repository and re-resolve.","Ensure all Quarkus extensions in the dependency tree have their `-deployment` artifacts available in the configured repositories.","Align all Quarkus extension versions to a single Quarkus BOM version to avoid mixed-version deployment artifacts."],"exampleFix":"// before\n<dependency>\n  <groupId>io.quarkus</groupId>\n  <artifactId>quarkus-hibernate-orm</artifactId>\n  <version>3.2.0</version> <!-- mixed with 3.15 core -->\n</dependency>\n// after\nUse the Quarkus BOM and drop explicit versions:\n<dependencyManagement><dependencies><dependency>\n  <groupId>io.quarkus</groupId><artifactId>quarkus-bom</artifactId>\n  <version>3.15.0</version><type>pom</type><scope>import</scope>\n</dependency></dependencies></dependencyManagement>","handlingStrategy":"try-catch","validationCode":"// Pre-check that every runtime extension in the tree has a resolvable -deployment artifact:\nfor (var dep : runtimeDeps) {\n    var deployment = new DefaultArtifact(dep.getGroupId(), dep.getArtifactId() + \"-deployment\", null, \"jar\", dep.getVersion());\n    boolean found = mvn.getSystem().resolveArtifact(mvn.getSession(),\n        new ArtifactRequest().setArtifact(deployment).setRepositories(repos)) != null;\n}","typeGuard":"static boolean looksLikeQuarkusExtension(org.eclipse.aether.artifact.Artifact a) {\n    return a.getFile() != null && new java.io.File(a.getFile().getParentFile(), \"quarkus-extension.properties\").exists();\n}","tryCatchPattern":"try {\n    model = resolver.resolveModel(module);\n} catch (AppModelResolverException e) {\n    if (e.getMessage().startsWith(\"Failed to inject extension deployment dependencies\")) {\n        log.error(\"Extension deployment injection failed; cause: \" + e.getCause(), e);\n        // suggest: mvn -U, align versions via quarkus-bom\n    }\n    throw e;\n}","preventionTips":["Manage all Quarkus extensions through a single quarkus-bom version.","Keep the local Maven cache healthy; run with -U after failed downloads.","Only use extensions published with their -deployment artifacts."],"tags":["maven","extension","dependency-resolution","bootstrap"],"backgroundTag":"deployment-dependency-injection-failed","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}