{"record":{"id":"4831a786ab5a7117","repo":"quarkusio/quarkus","slug":"failed-to-resolve-version-range-for-artifact","errorCode":null,"errorMessage":"Failed to resolve version range for ${artifact}","messagePattern":"Failed to resolve version range for (.+?)","errorType":"exception","errorClass":"BootstrapMavenException","httpStatus":null,"severity":"error","filePath":"independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java","lineNumber":210,"sourceCode":"        try {\n            return repoSystem.readArtifactDescriptor(repoSession,\n                    new ArtifactDescriptorRequest()\n                            .setArtifact(artifact)\n                            .setRepositories(\n                                    aggregatedRepos));\n        } catch (ArtifactDescriptorException e) {\n            throw new BootstrapMavenException(\"Failed to read descriptor of \" + artifact, e);\n        }\n    }\n\n    public VersionRangeResult resolveVersionRange(Artifact artifact) throws BootstrapMavenException {\n        try {\n            return repoSystem.resolveVersionRange(repoSession,\n                    new VersionRangeRequest()\n                            .setArtifact(artifact)\n                            .setRepositories(remoteRepos));\n        } catch (VersionRangeResolutionException ex) {\n            throw new BootstrapMavenException(\"Failed to resolve version range for \" + artifact, ex);\n        }\n    }\n\n    public String getLatestVersionFromRange(Artifact artifact, String range) throws BootstrapMavenException {\n        return getLatest(resolveVersionRange(new DefaultArtifact(artifact.getGroupId(), artifact.getArtifactId(),\n                artifact.getClassifier(), artifact.getExtension(), range)));\n    }\n\n    private String getLatest(final VersionRangeResult rangeResult) {\n        final List<Version> versions = rangeResult.getVersions();\n        if (versions.isEmpty()) {\n            return null;\n        }\n        Version next = versions.get(0);\n        for (int i = 1; i < versions.size(); ++i) {\n            final Version candidate = versions.get(i);\n            if (candidate.compareTo(next) > 0) {\n                next = candidate;","sourceCodeStart":192,"sourceCodeEnd":228,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java#L192-L228","documentation":"resolveVersionRange(Artifact) uses Aether's resolveVersionRange to enumerate versions matching the artifact's version range. A VersionRangeResolutionException (no repository can answer the range, invalid range, or repo errors) is wrapped as 'Failed to resolve version range for <gav>'.","triggerScenarios":"Calling resolveVersionRange or getLatestVersionFromRange with a malformed version range (e.g. bad '[1.0,' syntax), or when none of the configured remote repositories can provide version metadata (maven-metadata.xml) for the artifact.","commonSituations":"Querying the 'latest available version' of an artifact that only exists locally (remote metadata absent); invalid range syntax like '1.+' with unusual versions; repository metadata corrupted; offline mode with no local metadata.","solutions":["Validate the version range syntax (e.g. '[1.0,2.0)') before calling","Ensure the artifact is published to one of the configured repositories so maven-metadata.xml exists","Inspect the cause VersionRangeResolutionException for the specific range problem","Check network/proxy availability to the remote repository"],"exampleFix":"// before\nnew DefaultArtifact(\"g\",\"a\",\"jar\",\"1.0+\");\n// after\nnew DefaultArtifact(\"g\",\"a\",null,\"jar\",\"[1.0,)\");","handlingStrategy":"validation","validationCode":"String range = \"[1.0,)\";\nif (!range.matches(\"[\\\\[\\\\(].*[\\\\]\\\\)]\"))\n    throw new IllegalArgumentException(\"Invalid version range: \" + range);","typeGuard":"boolean validRange(String v) {\n    return v != null && (v.startsWith(\"[\") || v.startsWith(\"(\"))\n        && (v.endsWith(\"]\") || v.endsWith(\")\"));\n}","tryCatchPattern":"try {\n    VersionRangeResult r = resolver.resolveVersionRange(artifact);\n} catch (BootstrapMavenException e) {\n    if (e.getCause() instanceof VersionRangeResolutionException vre)\n        log.error(\"Range \" + artifact.getVersion() + \" failed: \" + vre.getMessage());\n}","preventionTips":["Validate version-range syntax before calling (Aether interval syntax)","Only query ranges for artifacts published to a configured remote repo (metadata must exist)","Avoid relying on version ranges in offline environments","Test range queries against a known artifact before production use"],"tags":["maven","version-range","metadata"],"backgroundTag":"version-range-resolution-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"}