{"record":{"id":"5f679ad22f394dbe","repo":"quarkusio/quarkus","slug":"invalid-artifact-artifact","errorCode":null,"errorMessage":"Invalid artifact ${artifact}","messagePattern":"Invalid artifact (.+?)","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/jbang/JBangBuilderImpl.java","lineNumber":81,"sourceCode":"                    .setMavenArtifactResolver(quarkusResolver)\n                    .setProjectRoot(pomFile.getParent())\n                    .setTargetDirectory(target)\n                    .setManagingProject(new GACTV(\"io.quarkus\", \"quarkus-bom\", \"\", \"pom\", getQuarkusVersion()))\n                    .setForcedDependencies(dependencies.stream().map(s -> {\n                        String[] parts = s.getKey().split(\":\");\n                        // The format of maven coordinate used in what jbang calls `canonical` form.\n                        // The form is described here: https://github.com/jbangdev/jbang/blob/main/src/main/java/dev/jbang/dependencies/MavenCoordinate.java#L118\n                        // Despite the fact that is non standard it's still used for compatibility reasons by the IntegrationManager:\n                        // https://github.com/jbangdev/jbang/blob/main/src/main/java/dev/jbang/spi/IntegrationManager.java#L73\n                        Dependency artifact;\n                        if (parts.length == 3) {\n                            artifact = new ArtifactDependency(parts[0], parts[1], null, ArtifactCoords.TYPE_JAR, parts[2]);\n                        } else if (parts.length == 4) {\n                            artifact = new ArtifactDependency(parts[0], parts[1], null, parts[2], parts[3]);\n                        } else if (parts.length == 5) {\n                            artifact = new ArtifactDependency(parts[0], parts[1], parts[2], parts[3], parts[4]);\n                        } else {\n                            throw new RuntimeException(\"Invalid artifact \" + s.getKey());\n                        }\n                        //artifact.setPath(s.getValue());\n                        return artifact;\n                    }).collect(Collectors.toList()))\n                    .setAppArtifact(appArtifact)\n                    .setIsolateDeployment(true)\n                    .setBuildSystemProperties(configurationProperties)\n                    .setRuntimeProperties(configurationProperties)\n                    .setMode(QuarkusBootstrap.Mode.PROD);\n\n            CuratedApplication app = builder\n                    .build().bootstrap();\n\n            if (nativeImage) {\n                System.setProperty(\"quarkus.native.enabled\", \"true\");\n            }\n            Map<String, Object> output = new HashMap<>();\n            app.runInAugmentClassLoader(\"io.quarkus.deployment.jbang.JBangAugmentorImpl\", output);","sourceCodeStart":63,"sourceCodeEnd":99,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/jbang/JBangBuilderImpl.java#L63-L99","documentation":"JBangBuilderImpl.postBuild() parses user-supplied dependency coordinates of the form groupId:artifactId[:classifier:extension:]version. If a value splits into an unsupported number of parts (not 3, 4, or 5 colon-separated segments), it throws RuntimeException(\"Invalid artifact \" + key).","triggerScenarios":"A dependency entry in the JBang configuration (map key) contains too few or too many ':' separated parts, e.g. 'org.acme:foo' (2 parts) or 'a:b:c:d:e:f' (6 parts).","commonSituations":"Typos in dependency strings; using GAV without version; accidentally including an extra colon; copying Maven-style coordinates with scope or other extra fields.","solutions":["Supply the artifact as groupId:artifactId:version (3 parts) or with classifier/extension as 4–5 parts","Remove extra colon-separated segments such as scope or packaging not covered by the 5-part format","Escape or strip any stray colons from the configured value"],"exampleFix":"// before\norg.acme:mylib\n// after\norg.acme:mylib:1.0.0","handlingStrategy":"validation","validationCode":"static void validateArtifactCoords(String s) {\n    int parts = s.split(\":\", -1).length;\n    if (parts < 3 || parts > 5)\n        throw new IllegalArgumentException(\"Artifact must have 3-5 colon-separated parts: \" + s);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always include the version in dependency coordinates","Count colons before submitting dependency strings","Keep coordinates in groupId:artifactId:version[:extension[:classifier]] form"],"tags":["jbang","configuration","artifact-coordinates","parsing"],"backgroundTag":"invalid-artifact-coordinates","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"}