{"record":{"id":"6c3907f1dd52832f","repo":"quarkusio/quarkus","slug":"quarkus-extension-runtime-artifact-a-is-missing","errorCode":null,"errorMessage":"Quarkus extension runtime artifact ${a} is missing ${BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT} property in its ${BootstrapConstants.DESCRIPTOR_PATH}","messagePattern":"Quarkus extension runtime artifact (.+?) is missing (.+?) property in its (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java","lineNumber":1114,"sourceCode":"        for (DependencyNode child : node.getChildren()) {\n            visitRuntimeDep(root, currentNode, currentId, child);\n        }\n    }\n\n    private ArtifactKey getDeploymentKey(org.eclipse.aether.artifact.Artifact a) throws MojoExecutionException {\n        final org.eclipse.aether.artifact.Artifact deployment = getDeploymentArtifact(a);\n        return deployment == null ? null : toKey(deployment);\n    }\n\n    private org.eclipse.aether.artifact.Artifact getDeploymentArtifact(org.eclipse.aether.artifact.Artifact a)\n            throws MojoExecutionException {\n        final Properties props = getExtensionDescriptor(a, false);\n        if (props == null) {\n            return null;\n        }\n        final String deploymentStr = props.getProperty(BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT);\n        if (deploymentStr == null) {\n            throw new IllegalStateException(\"Quarkus extension runtime artifact \" + a + \" is missing \"\n                    + BootstrapConstants.PROP_DEPLOYMENT_ARTIFACT + \" property in its \"\n                    + BootstrapConstants.DESCRIPTOR_PATH);\n        }\n        return DependencyUtils.toArtifact(deploymentStr);\n    }\n\n    private Properties getExtensionDescriptor(org.eclipse.aether.artifact.Artifact a, boolean packaged) {\n        final File f;\n        try {\n            f = resolve(a);\n        } catch (Exception e) {\n            getLog().warn(\"Failed to resolve \" + a);\n            return null;\n        }\n        // if it hasn't been packaged yet, we skip it, we are not packaging yet\n        if (!a.getExtension().equals(ArtifactCoords.TYPE_JAR) || packaged && !isJarFile(f)) {\n            return null;\n        }","sourceCodeStart":1096,"sourceCodeEnd":1132,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java#L1096-L1132","documentation":"Every Quarkus runtime extension jar must contain a quarkus-extension.properties descriptor with a deployment-artifact property pointing to its deployment counterpart. When the mojo looks up the deployment artifact for a runtime extension artifact and the property is absent, it throws this IllegalStateException.","triggerScenarios":"A jar on the dependency classpath is detected as a Quarkus extension (has quarkus-extension.properties) but the properties lack the deployment-artifact key — typically a hand-crafted or malformed extension jar.","commonSituations":"Manually built extension jars missing descriptor entries; custom annotation processors generating incomplete descriptors; old/mismatched extension artifacts produced by non-standard tooling.","solutions":["Regenerate the extension jar using standard quarkus-maven-plugin build so the descriptor includes deployment-artifact","Manually add deployment-artifact=<G:A:C:P:V> to quarkus-extension.properties inside the jar","Verify the extension's extension-descriptor mojo ran during its build","Check that you depend on the correct, officially published extension version"],"exampleFix":"# before (descriptor missing key)\nquarkus-extension.name=my-ext\n# after\nquarkus-extension.name=my-ext\ndeployment-artifact=my.org:my-ext-deployment::jar:1.0.0","handlingStrategy":"validation","validationCode":"unzip -p my-ext.jar META-INF/quarkus-extension.properties | grep deployment-artifact","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Build extensions only with quarkus-maven-plugin extension-descriptor goal","Inspect published jars for descriptor completeness before depending on them","Pin to official extension releases"],"tags":["descriptor","quarkus-extension","malformed-artifact"],"backgroundTag":"missing-extension-descriptor-property","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"}