{"record":{"id":"f654921e2f4197ba","repo":"quarkusio/quarkus","slug":"classpath-resource-pompropspath-is-missing-art","errorCode":null,"errorMessage":"Classpath resource + pomPropsPath + is missing artifactId","messagePattern":"Classpath resource \\+ pomPropsPath \\+ is missing artifactId","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java","lineNumber":645,"sourceCode":"    private Dependency getQuarkusBootstrapResolver(String artifactId) {\n        final String pomPropsPath = \"META-INF/maven/io.quarkus/\" + artifactId + \"/pom.properties\";\n        final InputStream devModePomPropsIs = DevModeMain.class.getClassLoader().getResourceAsStream(pomPropsPath);\n        if (devModePomPropsIs == null) {\n            throw new GradleException(\"Failed to locate \" + pomPropsPath + \" on the classpath\");\n        }\n        final Properties devModeProps = new Properties();\n        try (InputStream is = devModePomPropsIs) {\n            devModeProps.load(is);\n        } catch (IOException e) {\n            throw new GradleException(\"Failed to load \" + pomPropsPath + \" from the classpath\", e);\n        }\n        final String devModeGroupId = devModeProps.getProperty(\"groupId\");\n        if (devModeGroupId == null) {\n            throw new GradleException(\"Classpath resource \" + pomPropsPath + \" is missing groupId\");\n        }\n        final String devModeArtifactId = devModeProps.getProperty(\"artifactId\");\n        if (devModeArtifactId == null) {\n            throw new GradleException(\"Classpath resource \" + pomPropsPath + \" is missing artifactId\");\n        }\n        final String devModeVersion = devModeProps.getProperty(\"version\");\n        if (devModeVersion == null) {\n            throw new GradleException(\"Classpath resource \" + pomPropsPath + \" is missing version\");\n        }\n        return project.getDependencies()\n                .create(String.format(\"%s:%s:%s\", devModeGroupId, devModeArtifactId, devModeVersion));\n    }\n\n    private Dependency getQuarkusCoreDeployment(ApplicationModel appModel) {\n        ResolvedDependency coreDeployment = null;\n        for (ResolvedDependency d : appModel.getDependencies()) {\n            if (d.isDeploymentCp() && d.getArtifactId().equals(\"quarkus-core-deployment\")\n                    && d.getGroupId().equals(\"io.quarkus\")) {\n                coreDeployment = d;\n                break;\n            }\n        }","sourceCodeStart":627,"sourceCodeEnd":663,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java#L627-L663","documentation":"QuarkusDev.getQuarkusBootstrapResolver reads a properties resource (pomPropsPath) from the classpath to build the dev-mode dependency coordinate. This GradleException is thrown when the resource lacks the artifactId key. Like its groupId/version siblings, it signals malformed Quarkus plugin metadata on the classpath.","triggerScenarios":"Dev-mode startup (quarkusDev task) where the loaded poms.properties resource has no 'artifactId' property; raised within getQuarkusBootstrapResolver via getQuarkusGradleBootstrapResolver or getQuarkusMavenBootstrapResolver.","commonSituations":"Broken Gradle/Maven artifact caches; a pom.properties overwritten or truncated by a failed download; snapshot artifacts republished with incomplete metadata; custom shading/repackaging of Quarkus plugin jars that dropped the properties file contents.","solutions":["Purge cached io.quarkus artifacts from ~/.gradle/caches/modules-2 and ~/.m2/repository, then re-resolve dependencies.","Use matching versions for the Quarkus Gradle plugin and the Quarkus platform BOM.","Check the actual jar for poms.properties (unzip -p <jar> <path>) to confirm the artifactId key exists.","Run with --refresh-dependencies to force re-download."],"exampleFix":"// before\n./gradlew quarkusDev\n// after: force clean re-resolution\nrm -rf ~/.gradle/caches/modules-2/files-2.1/io.quarkus\n./gradlew quarkusDev --refresh-dependencies","handlingStrategy":"validation","validationCode":"// Ensure matching Quarkus plugin/BOM versions before dev mode\nString pluginVersion = \"3.15.0\";\nString buildFile = Files.readString(Path.of(\"build.gradle\"));\nif (!buildFile.contains(\"enforcedPlatform('io.quarkus.platform:quarkus-bom:\" + pluginVersion + \"')\")) {\n  throw new IllegalStateException(\"Quarkus plugin and BOM versions are misaligned\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  ./gradlew quarkusDev\n} catch (GradleException e) {\n  if (e.getMessage().contains(\"is missing artifactId\")) {\n    // delete io.quarkus entries from Gradle/Maven caches and re-run with --refresh-dependencies\n  }\n}","preventionTips":["Never hand-edit pom.properties inside cached jars.","Use a single version catalog for all Quarkus coordinates.","Run ./gradlew --stop after upgrading Quarkus to avoid stale daemons.","Verify artifact integrity after interrupted downloads."],"tags":["gradle","classpath","build","quarkus-dev-mode"],"backgroundTag":"corrupted-dependency-metadata","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"}