{"record":{"id":"daeff72854496cdf","repo":"quarkusio/quarkus","slug":"failed-to-parse-conditional-dependencies-configura","errorCode":null,"errorMessage":"Failed to parse conditional dependencies configuration of ${runtimeArtifact}","messagePattern":"Failed to parse conditional dependencies configuration of (.+?)","errorType":"exception","errorClass":"BootstrapDependencyProcessingException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ExtensionInfo.java","lineNumber":93,"sourceCode":"\n    private Artifact[] initConditionalDeps(boolean devMode) throws BootstrapDependencyProcessingException {\n        return devMode\n                ? toArtifactArray(\n                        joinAndDedupe(splitConditionalDeps(props.getProperty(BootstrapConstants.CONDITIONAL_DEPENDENCIES)),\n                                splitConditionalDeps(props.getProperty(BootstrapConstants.CONDITIONAL_DEV_DEPENDENCIES))),\n                        runtimeArtifact)\n                : toArtifactArray(splitConditionalDeps(props.getProperty(BootstrapConstants.CONDITIONAL_DEPENDENCIES)),\n                        runtimeArtifact);\n    }\n\n    private static Artifact[] toArtifactArray(String[] strArr, Artifact runtimeArtifact)\n            throws BootstrapDependencyProcessingException {\n        var artifactArr = new Artifact[strArr.length];\n        for (int i = 0; i < strArr.length; ++i) {\n            try {\n                artifactArr[i] = toArtifact(strArr[i]);\n            } catch (Exception e) {\n                throw new BootstrapDependencyProcessingException(\n                        \"Failed to parse conditional dependencies configuration of \" + runtimeArtifact, e);\n            }\n        }\n        return artifactArr;\n    }\n\n    private static String[] splitConditionalDeps(String conditionalDepsStr) {\n        return conditionalDepsStr == null ? new String[0] : BootstrapUtils.splitByWhitespace(conditionalDepsStr);\n    }\n\n    private static String[] joinAndDedupe(String[] arr1, String[] arr2) {\n        if (arr1.length == 0) {\n            return arr2;\n        }\n        if (arr2.length == 0) {\n            return arr1;\n        }\n        if (arr1.length == 1) {","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/ExtensionInfo.java#L75-L111","documentation":"ExtensionInfo converts the conditional-dependencies property (a comma-separated string array) into Artifact coordinates. This BootstrapDependencyProcessingException wraps any parse failure, attributing it to the runtime artifact whose descriptor declared the malformed entry.","triggerScenarios":"initConditionalDeps -> toArtifactArray when a quarkus.extension.conditional.dependencies.<env> value contains a string not matching groupId:artifactId:version(:type[:classifier]) format.","commonSituations":"Typos in the extension descriptor properties (missing colon segments, spaces, wrong order), properties written by hand instead of generated by the extension plugin, empty entries from trailing commas.","solutions":["Inspect the runtime POM properties and fix each entry to G:A:V(:type[:classifier]) format","Regenerate extension descriptor properties with quarkus-extension-maven-plugin instead of editing them by hand","Remove empty/trailing entries from the comma-separated list","Check the cause (wrapped Exception) for the exact offending string"],"exampleFix":"// before\n<quarkus.extension.conditional.dependencies>com.acme:myext,foo-bar</quarkus.extension.conditional.dependencies>\n// after\n<quarkus.extension.conditional.dependencies>com.acme:myext:1.0.0,org.acme:foo-bar:2.1.0</quarkus.extension.conditional.dependencies>","handlingStrategy":"validation","validationCode":"java.util.regex.Pattern GAV = java.util.regex.Pattern.compile(\"[^:]+:[^:]+:[^:]+(:[^:]+(:[^:]+)?)?\");\nstatic void validateConditionalDeps(String csv) {\n    for (String s : csv.split(\",\")) {\n        if (!GAV.matcher(s.trim()).matches()) throw new IllegalArgumentException(\"Bad GAV: \" + s);\n    }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Format conditional-dependency entries strictly as G:A:V(:type[:classifier])","Generate descriptor properties via quarkus-extension-maven-plugin, not by hand","Trim and remove empty entries from comma-separated lists"],"tags":["quarkus","extension-descriptor","parsing"],"backgroundTag":"extension-descriptor-parse-failed","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"}