{"record":{"id":"ee0065749ccb7b0f","repo":"quarkusio/quarkus","slug":"failed-to-initialize-deployment-dependencies-resol","errorCode":null,"errorMessage":"Failed to initialize deployment dependencies resolver","messagePattern":"Failed to initialize deployment dependencies resolver","errorType":"exception","errorClass":"BootstrapDependencyProcessingException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java","lineNumber":207,"sourceCode":"            setWalkingFlag(COLLECT_RELOADABLE_MODULES);\n        }\n        // we need to be able to take into account whether the deployment dependencies are on an optional dependency branch\n        // for that we are going to use a custom dependency selector and re-initialize the resolver to use it\n        final MavenArtifactResolver originalResolver = resolver;\n        final RepositorySystemSession originalSession = resolver.getSession();\n        final DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(originalSession);\n        session.setDependencySelector(\n                DeploymentDependencySelector.ensureDeploymentDependencySelector(session.getDependencySelector()));\n        try {\n            this.resolver = new MavenArtifactResolver(new BootstrapMavenContext(BootstrapMavenContext.config()\n                    .setRepositorySystem(resolver.getSystem())\n                    .setRepositorySystemSession(session)\n                    .setRemoteRepositories(resolver.getRepositories())\n                    .setRemoteRepositoryManager(resolver.getRemoteRepositoryManager())\n                    .setCurrentProject(resolver.getMavenContext().getCurrentProject())\n                    .setWorkspaceDiscovery(false)));\n        } catch (BootstrapMavenException e) {\n            throw new BootstrapDependencyProcessingException(\"Failed to initialize deployment dependencies resolver\",\n                    e);\n        }\n\n        visitRuntimeDependencies(root.getChildren());\n        enableConditionalDeps();\n\n        if (!runtimeModelOnly) {\n            for (ExtensionDependency extDep : deploymentInjectionPoints) {\n                injectDeploymentDependencies(extDep);\n            }\n        }\n\n        root = normalize(originalSession, root);\n        // add deployment dependencies\n        new BuildDependencyGraphVisitor(originalResolver, appBuilder, buildTreeConsumer).visit(root);\n\n        if (!CONVERGED_TREE_ONLY && collectReloadableModules) {\n            for (ResolvedDependencyBuilder db : appBuilder.getDependencies()) {","sourceCodeStart":189,"sourceCodeEnd":225,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java#L189-L225","documentation":"During resolve(), ApplicationDependencyTreeResolver builds a new MavenArtifactResolver with a custom DeploymentDependencySelector (so optional deployment-only dependencies are included). Constructing BootstrapMavenContext/MavenArtifactResolver can fail (bad local repo path, invalid settings.xml, unresolvable repository manager config); the BootstrapMavenException is wrapped in this BootstrapDependencyProcessingException.","triggerScenarios":"resolve() at the point of re-initializing this.resolver — new BootstrapMavenContext(config().setRepositorySystem(...).setRepositorySystemSession(...).setRemoteRepositories(...)) throws BootstrapMavenException because the Maven context cannot be initialized (invalid local repository, unreadable/misconfigured settings.xml, bad current project model).","commonSituations":"Corrupt or invalid ~/.m2/settings.xml (XML errors, unresolvable variable interpolation); -Dmaven.repo.local pointing to an unwritable/nonexistent path; Maven project model errors in the current project (pom.xml problems) when running via the Quarkus Maven plugin; exotic Maven installations.","solutions":["Run 'mvn help:effective-settings' to validate settings.xml; fix XML/interpolation errors.","Check the maven.repo.local path exists and is writable; unset or fix a bad -Dmaven.repo.local value.","Validate the application pom.xml (mvn validate) — a broken current project model breaks context initialization.","Test with a clean ~/.m2 (or fresh MAVEN_OPTS) to rule out corrupted local repository metadata."],"exampleFix":"// before: bad local repo path\n$ mvn quarkus:dev -Dmaven.repo.local=/nonexistent/dir\n// after: valid writable local repo\n$ mvn quarkus:dev -Dmaven.repo.local=$HOME/.m2/repository","handlingStrategy":"validation","validationCode":"// validate Maven context inputs before launching the build\nif (!Files.isWritable(Path.of(localRepoPath)))\n    throw new IllegalStateException(\"maven.repo.local not writable: \" + localRepoPath);\n// and verify settings parse:\nnew ProcessBuilder(\"mvn\", \"help:effective-settings\").inheritIO().start().waitFor();","typeGuard":null,"tryCatchPattern":"try {\n    quarkusBuild();\n} catch (BootstrapDependencyProcessingException e) {\n    if (e.getMessage().contains(\"Failed to initialize deployment dependencies resolver\")) {\n        throw new IllegalStateException(\"Fix settings.xml / maven.repo.local, cause: \" + e.getCause(), e);\n    }\n    throw e;\n}","preventionTips":["Keep settings.xml valid and simple; run help:effective-settings after edits.","Ensure -Dmaven.repo.local points to an existing writable directory.","Run mvn validate to catch broken project models early.","Avoid exotic global Maven extension/plexus customizations that break context bootstrapping."],"tags":["maven","configuration","quarkus-bootstrap"],"backgroundTag":"maven-context-initialization-failed","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"}