{"record":{"id":"4a5821643e1f31fe","repo":"quarkusio/quarkus","slug":"failed-to-collect-dependencies-of-4a5821","errorCode":null,"errorMessage":"Failed to collect dependencies of ","messagePattern":"Failed to collect dependencies of ","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":626,"sourceCode":"        }\n        try {\n            final Properties rtProps = new Properties();\n            try (BufferedReader reader = Files.newBufferedReader(visit.getPath())) {\n                rtProps.load(reader);\n            }\n            return rtProps;\n        } catch (IOException e) {\n            throw new UncheckedIOException(e);\n        }\n    }\n\n    private void injectDeploymentDependencies(ExtensionDependency extDep)\n            throws BootstrapDependencyProcessingException {\n        log.debugf(\"Injecting deployment dependency %s\", extDep.info.deploymentArtifact);\n        final DependencyNode deploymentNode = collectDependencies(extDep.info.deploymentArtifact, extDep.exclusions,\n                extDep.runtimeNode.getRepositories());\n        if (deploymentNode.getChildren().isEmpty()) {\n            throw new BootstrapDependencyProcessingException(\n                    \"Failed to collect dependencies of \" + deploymentNode.getArtifact()\n                            + \": either its POM could not be resolved from the available Maven repositories \"\n                            + \"or the artifact does not have any dependencies while at least a dependency on the runtime artifact \"\n                            + extDep.info.runtimeArtifact + \" is expected\");\n        }\n\n        if (resolver.getProjectModuleResolver() != null && collectReloadableModules) {\n            clearReloadable(deploymentNode);\n        }\n\n        extDep.replaceRuntimeExtensionNodes(deploymentNode);\n        if (!extDep.presentInTargetGraph) {\n            throw new BootstrapDependencyProcessingException(\n                    \"Quarkus extension deployment artifact \" + deploymentNode.getArtifact()\n                            + \" does not appear to depend on the corresponding runtime artifact \"\n                            + extDep.info.runtimeArtifact);\n        }\n","sourceCodeStart":608,"sourceCodeEnd":644,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ApplicationDependencyTreeResolver.java#L608-L644","documentation":"Thrown as a BootstrapDependencyProcessingException by injectDeploymentDependencies when the collected dependency tree for an extension's deployment artifact is empty. Quarkus expects every deployment artifact to depend at least on its corresponding runtime artifact, so an empty tree means the deployment POM could not be resolved or the artifact genuinely has no dependencies.","triggerScenarios":"collectDependencies(deploymentArtifact, ...) returns a node with no children — the deployment artifact's POM was missing from all repositories, or the deployment artifact exists but declares no dependencies (a malformed/incorrectly built extension).","commonSituations":"Publishing a custom extension deployment artifact without a POM dependency on the runtime artifact; a repository serving the JAR but not the POM; a version skew where the deployment artifact was built without proper parent POM inheritance.","solutions":["Verify the deployment artifact's POM exists and is downloadable from the configured repositories (check ~/.m2/repository/.../*.pom)","Ensure the deployment artifact's POM declares a dependency on its runtime artifact with the same version","Rebuild and redeploy/reinstall the extension so POM and JAR are consistent (mvn install or mvn deploy)","If the artifact is third-party, report/upgrade — the published artifact is malformed"],"exampleFix":"// before: deployment POM missing runtime dependency\n<artifactId>acme-quarkus-extension-deployment</artifactId>\n<!-- no dependencies -->\n// after\n<dependencies>\n  <dependency>\n    <groupId>com.acme</groupId>\n    <artifactId>acme-quarkus-extension</artifactId>\n    <version>${project.version}</version>\n  </dependency>\n</dependencies>","handlingStrategy":"validation","validationCode":"// Validate the extension artifact before resolving: POM must exist and reference the runtime artifact\nboolean deploymentPomValid(String groupPath, String artifactId, String version) throws IOException {\n    Path pom = Path.of(System.getProperty(\"user.home\"), \".m2\", \"repository\", groupPath,\n        artifactId, version, artifactId + \"-\" + version + \".pom\");\n    if (!Files.exists(pom)) return false;\n    String content = Files.readString(pom);\n    return content.contains(\"<dependency>\") && content.contains(artifactId.replace(\"-deployment\", \"\"));\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always generate extensions via quarkus-maven-plugin create-extension so runtime/deployment POM wiring is correct","Never hand-strip dependencies from a deployment POM","Verify published extension artifacts include both JAR and POM","Test custom extensions locally with mvn install before publishing"],"tags":["maven","quarkus-extensions","pom"],"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-14T00:17:10.932Z"}