{"record":{"id":"2fc0912f2e33ee02","repo":"quarkusio/quarkus","slug":"the-deployment-artifact-rootdeploymentgact-depe","errorCode":null,"errorMessage":"The deployment artifact ${rootDeploymentGact} depends on the following Quarkus extension deployment artifacts whose corresponding runtime artifacts were not found among the dependencies of ${project.getArtifact()}:","messagePattern":"The deployment artifact (.+?) depends on the following Quarkus extension deployment artifacts whose corresponding runtime artifacts were not found among the dependencies of (.+?):","errorType":"exception","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java","lineNumber":983,"sourceCode":"\n                if (!unexpectedDeploymentDeps.isEmpty()) {\n                    if (buf.length() > 0) {\n                        buf.append(System.lineSeparator());\n                    }\n                    buf.append(\"The deployment artifact \").append(rootDeploymentGact).append(\n                            \" depends on the following Quarkus extension deployment artifacts whose corresponding runtime artifacts were not found among the dependencies of \")\n                            .append(project.getArtifact()).append(\":\");\n                    for (ArtifactKey a : unexpectedDeploymentDeps) {\n                        buf.append(' ').append(a);\n                    }\n                    log.error(\"The deployment artifact \" + rootDeploymentGact\n                            + \" depends on the following Quarkus extension deployment artifacts whose corresponding runtime artifacts were not found among the dependencies of \"\n                            + project.getArtifact() + \":\");\n                    highlightInTree(deploymentNode, unexpectedDeploymentDeps);\n                }\n            }\n\n            throw new MojoExecutionException(buf.toString());\n        }\n\n    }\n\n    private DependencyResult resolveRuntimeDeps() throws MojoExecutionException {\n        if (runtimeDeps == null) {\n            try {\n                runtimeDeps = repoSystem.resolveDependencies(repoSession,\n                        new DependencyRequest().setCollectRequest(newCollectRuntimeDepsRequest()));\n            } catch (Exception e) {\n                throw new MojoExecutionException(\"Failed to resolve dependencies of \" + project.getArtifact(), e);\n            }\n        }\n        return runtimeDeps;\n    }\n\n    private void highlightInTree(DependencyNode node, Collection<ArtifactKey> keys) {\n        highlightInTree(0, node, keys, new HashSet<>(), new StringBuilder(), new ArrayList<>());","sourceCodeStart":965,"sourceCodeEnd":1001,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java#L965-L1001","documentation":"After collecting the deployment artifact's dependency tree, the mojo verifies every Quarkus deployment dependency has a matching runtime dependency among the project's runtime dependencies. If some deployment deps lack runtime counterparts, it builds this detailed error listing them (via highlightInTree) and fails.","triggerScenarios":"The deployment module of the extension depends on io.quarkus:<something>-deployment but the runtime module/pom does not declare the corresponding io.quarkus:<something> runtime artifact.","commonSituations":"Adding a dependency on another extension's deployment artifact without adding its runtime artifact; version drift after refactoring; manually edited poms missing runtime counterpart.","solutions":["Add the missing runtime dependencies (e.g. io.quarkus:quarkus-xyz) matching each listed deployment artifact","Keep deployment and runtime dependency lists in sync when adding cross-extension dependencies","Use quarkus-maven-plugin extension scaffolding which generates matched pairs","Run mvn dependency:tree on both runtime and deployment modules to compare"],"exampleFix":"<!-- before: deployment-only dep -->\n<dependency>\n  <groupId>io.quarkus</groupId>\n  <artifactId>quarkus-xyz-deployment</artifactId>\n</dependency>\n<!-- after: add runtime counterpart -->\n<dependency>\n  <groupId>io.quarkus</groupId>\n  <artifactId>quarkus-xyz</artifactId>\n</dependency>\n<dependency>\n  <groupId>io.quarkus</groupId>\n  <artifactId>quarkus-xyz-deployment</artifactId>\n</dependency>","handlingStrategy":"validation","validationCode":"mvn dependency:tree -pl runtime\ndiff <(mvn -q dependency:tree -pl runtime) <(mvn -q dependency:tree -pl deployment)","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always add runtime+deployment pairs together","Audit dependency:tree on both modules in CI","Follow quarkus extension scaffolding conventions"],"tags":["maven","dependency-validation","quarkus-deployment"],"backgroundTag":"missing-runtime-dependency","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"}