{"record":{"id":"cb26d69db0c46c54","repo":"quarkusio/quarkus","slug":"the-requested-maven-version-requiredmavenversionr","errorCode":null,"errorMessage":"The requested Maven version <requiredMavenVersionRange> is invalid.","messagePattern":"The requested Maven version <requiredMavenVersionRange> is invalid\\.","errorType":"exception","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"devtools/maven/src/main/java/io/quarkus/maven/components/MavenVersionEnforcer.java","lineNumber":76,"sourceCode":"     * @param requiredMavenVersionRange range of allowed versions for Maven.\n     * @param actualMavenVersion the version to be checked.\n     * @throws MojoExecutionException the given version fails the enforcement rule\n     */\n    private void enforce(Log log,\n            String requiredMavenVersionRange, ArtifactVersion actualMavenVersion)\n            throws MojoExecutionException {\n        if (StringUtils.isBlank(requiredMavenVersionRange)) {\n            throw new MojoExecutionException(\"Maven version can't be empty.\");\n        }\n        if (!actualMavenVersion.toString().equals(requiredMavenVersionRange)) {\n            try {\n                final VersionRange vr = VersionRange.createFromVersionSpec(requiredMavenVersionRange);\n                if (!containsVersion(vr, actualMavenVersion)) {\n                    throw new MojoExecutionException(getDetectedVersionStr(actualMavenVersion.toString())\n                            + \" is not supported, it must be in \" + vr + \".\");\n                }\n            } catch (InvalidVersionSpecificationException e) {\n                throw new MojoExecutionException(\"The requested Maven version \"\n                        + requiredMavenVersionRange + \" is invalid.\", e);\n            }\n        }\n        if (log.isDebugEnabled()) {\n            log.debug(\n                    getDetectedVersionStr(actualMavenVersion.toString()) + \" is allowed in \" + requiredMavenVersionRange + \".\");\n        }\n    }\n\n    /**\n     * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently, the default\n     * <code>containsVersion</code> method assumes a singular version means allow everything.\n     *\n     * @param allowedRange range of allowed versions.\n     * @param theVersion the version to be checked.\n     * @return {@code true} if the version is contained by the range.\n     */\n    private static boolean containsVersion(VersionRange allowedRange, ArtifactVersion theVersion) {","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/maven/src/main/java/io/quarkus/maven/components/MavenVersionEnforcer.java#L58-L94","documentation":"Thrown by QuarkusMavenPluginBase (ensureMavenVersion) when the version-range expression configured for the required Maven version cannot be parsed by Maven's VersionRange.createFromVersionSpec. The plugin checks the running Maven version against this range at build start; an unparseable range aborts the build before any goal logic runs. The original InvalidVersionSpecificationException is wrapped in a MojoExecutionException.","triggerScenarios":"The requiredMavenVersionRange parameter passed to ensureMavenVersion contains syntax VersionRange cannot parse — e.g. a typo like '3.8.' or '[3.8,)' miswritten as '3,8' or an unclosed bracket '[3.8,2.0'.","commonSituations":"Hand-editing requiredMavenVersionRange in pom.xml or a parent POM; copy-pasting a range with smart quotes or whitespace typos; a custom Quarkus mojo/plugin configuration supplying a malformed property value; IDE property placeholders left unresolved like ${req.maven.range} resolving to garbage.","solutions":["Fix the requiredMavenVersionRange value to valid Maven version-range syntax, e.g. [3.8.2,) — check the pom.xml where the Quarkus Maven plugin is configured.","If the range comes from a property, verify the property is defined and resolves correctly (mvn help:effective-pom).","If the range is hardcoded in a custom mojo, correct the literal passed to ensureMavenVersion.","Temporarily print the resolved value with mvn help:evaluate -Dexpression=<property> to see exactly what string is being parsed."],"exampleFix":"// before (pom.xml)\n<requiredMavenVersionRange>[3.8.2</requiredMavenVersionRange>\n// after\n<requiredMavenVersionRange>[3.8.2,)</requiredMavenVersionRange>","handlingStrategy":"validation","validationCode":"import org.apache.maven.artifact.versioning.VersionRange;\nimport org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;\n\nboolean isValidRange(String spec) {\n    try {\n        VersionRange.createFromVersionSpec(spec);\n        return true;\n    } catch (InvalidVersionSpecificationException e) {\n        return false;\n    }\n}\n// before the build: assert isValidRange(\"[3.8.2,)\")","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always use canonical Maven range syntax: [3.8.2,), [1.0,2.0), (,2.0]","Test the range string with mvn help:evaluate or a unit test using VersionRange.createFromVersionSpec","Keep requiredMavenVersionRange in one well-known property instead of repeating it","Never hand-edit ranges without validating brackets and commas"],"tags":["maven","configuration","version-range","build-failure"],"backgroundTag":"invalid-version-range","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}