{"record":{"id":"3e0fc09b6218f982","repo":"quarkusio/quarkus","slug":"failed-to-resolve-descriptor-for","errorCode":null,"errorMessage":"Failed to resolve descriptor for ","messagePattern":"Failed to resolve descriptor for ","errorType":"exception","errorClass":"DeploymentInjectionException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java","lineNumber":674,"sourceCode":"        final ResolvedDependencyBuilder dep = appBuilder.getDependency(getKey(node.getArtifact()));\n        if (dep != null) {\n            dep.clearFlag(DependencyFlags.RELOADABLE);\n        }\n    }\n\n    private DependencyNode collectDependencies(Artifact artifact, Collection<Exclusion> exclusions,\n            List<RemoteRepository> repos) {\n        final CollectRequest request;\n        if (managedDeps.isEmpty()) {\n            request = new CollectRequest()\n                    .setRoot(new Dependency(artifact, JavaScopes.COMPILE, false, exclusions))\n                    .setRepositories(repos);\n        } else {\n            final ArtifactDescriptorResult descr;\n            try {\n                descr = resolver.resolveDescriptor(artifact, repos);\n            } catch (BootstrapMavenException e) {\n                throw new DeploymentInjectionException(\"Failed to resolve descriptor for \" + artifact, e);\n            }\n            final Map<ArtifactKey, Dependency> effectiveManagedMap;\n            final List<Dependency> effectiveManagedDeps;\n            if (descr.getManagedDependencies().isEmpty()) {\n                effectiveManagedMap = managedDeps;\n                effectiveManagedDeps = new ArrayList<>(managedDeps.values());\n            } else {\n                effectiveManagedMap = new HashMap<>(managedDeps);\n                DependencyUtils.putAll(effectiveManagedMap, descr.getManagedDependencies());\n                effectiveManagedDeps = new ArrayList<>(effectiveManagedMap.values());\n            }\n\n            var directDeps = DependencyUtils.mergeDependencies(List.of(), descr.getDependencies(), effectiveManagedMap,\n                    Set.of(JavaScopes.PROVIDED, JavaScopes.TEST));\n\n            request = new CollectRequest()\n                    .setDependencies(directDeps)\n                    .setManagedDependencies(effectiveManagedDeps)","sourceCodeStart":656,"sourceCodeEnd":692,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java#L656-L692","documentation":"Thrown as a DeploymentInjectionException by visitExtensionDependency (within the tree-walking flow exposed publicly by the resolver) when resolving the quarkus-extension descriptor (via MavenArtifactResolver.resolveDescriptor, i.e. reading the artifact's POM/effective model) fails with a BootstrapMavenException. The message includes the artifact that could not be described.","triggerScenarios":"While walking a runtime extension dependency, resolver.resolveDescriptor(artifact, repos) cannot download or read the artifact's POM — missing POM in repos, corrupt local repo, or repository access error.","commonSituations":"JAR present in repo but POM missing; corrupt ~/.m2 entry; auth/proxy blocking the repository hosting the POM; offline mode with incomplete local repo.","solutions":["Check the cause (BootstrapMavenException) for the exact POM that failed and from which repositories","Verify the POM exists in the repositories; if corrupt locally, delete the artifact dir under ~/.m2/repository and re-resolve","Fix repository configuration (auth, mirror, proxy) or add the missing repository","For locally built extensions, run mvn install so both JAR and POM are in the local repo"],"exampleFix":"// fix a corrupt local entry\nrm -rf ~/.m2/repository/com/acme/acme-quarkus-extension/1.0.0\n./mvnw -U quarkus:dev","handlingStrategy":"try-catch","validationCode":"// Verify the POM is retrievable before resolution\nboolean pomAvailable(String groupId, String artifactId, String version) {\n    return runMaven(\"dependency:get -Dartifact=\" + groupId + \":\" + artifactId + \":\" + version + \":pom\") == 0;\n}","typeGuard":null,"tryCatchPattern":"try {\n    model = resolver.resolve();\n} catch (DeploymentInjectionException e) {\n    if (e.getMessage().startsWith(\"Failed to resolve descriptor for\")) {\n        log.error(\"Cannot read POM/descriptor; check repos and local .m2: \" + e.getCause(), e);\n    }\n    throw e;\n}","preventionTips":["Ensure repositories serve POMs together with JARs","Clear corrupt local repo entries promptly","Verify settings.xml auth/proxy for private repos","Run with -U to force metadata refresh after publishing new versions"],"tags":["maven","pom","quarkus-extensions"],"backgroundTag":"missing-pom-artifact","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}