{"record":{"id":"9e4b202aa90ef248","repo":"quarkusio/quarkus","slug":"choose-a-valid-build-tool-accepted-values-are","errorCode":null,"errorMessage":"Choose a valid build tool. Accepted values are: ${validBuildTools}","messagePattern":"Choose a valid build tool\\. Accepted values are: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java","lineNumber":263,"sourceCode":"        final MojoMessageWriter log = new MojoMessageWriter(getLog());\n        ExtensionCatalogResolver catalogResolver = getExtensionCatalogResolver(mvn, log);\n        ExtensionCatalog catalog = resolveExtensionsCatalog(this, bomGroupId, bomArtifactId, bomVersion, stream,\n                catalogResolver, mvn, log);\n\n        File projectRoot = outputDirectory;\n        File pom = project != null ? project.getFile() : null;\n        Model parentPomModel = null;\n\n        boolean containsAtLeastOneGradleFile = false;\n        for (String gradleFile : Arrays.asList(\"build.gradle\", \"settings.gradle\", \"build.gradle.kts\", \"settings.gradle.kts\")) {\n            containsAtLeastOneGradleFile |= new File(projectRoot, gradleFile).isFile();\n        }\n\n        BuildTool buildToolEnum = BuildTool.findTool(buildTool);\n        if (buildToolEnum == null) {\n            String validBuildTools = String.join(\",\",\n                    Arrays.asList(BuildTool.values()).stream().map(BuildTool::toString).collect(Collectors.toList()));\n            throw new IllegalArgumentException(\"Choose a valid build tool. Accepted values are: \" + validBuildTools);\n        }\n        if (BuildTool.MAVEN.equals(buildToolEnum)) {\n            if (pom != null && pom.isFile()) {\n                try {\n                    parentPomModel = MojoUtils.readPom(pom);\n                    if (!\"pom\".equals(parentPomModel.getPackaging())) {\n                        throw new MojoExecutionException(\n                                \"The parent project must have a packaging type of POM. Current packaging: \"\n                                        + parentPomModel.getPackaging());\n                    }\n                } catch (IOException e) {\n                    throw new MojoExecutionException(\"Could not access parent pom.\", e);\n                }\n            } else if (containsAtLeastOneGradleFile) {\n                throw new MojoExecutionException(\n                        \"You are trying to create a Maven project in a directory that contains only Gradle build files.\");\n            }\n        } else if (BuildTool.GRADLE.equals(buildToolEnum) || BuildTool.GRADLE_KOTLIN_DSL.equals(buildToolEnum)) {","sourceCodeStart":245,"sourceCodeEnd":281,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java#L245-L281","documentation":"The `create` mojo accepts a `-DbuildTool` parameter which must be one of the known BuildTool values (maven, gradle, gradle-kotlin-dsl). BuildTool.findTool() returns null for anything else, and the mojo throws an IllegalArgumentException listing the accepted values. This validates the build tool selection before scaffolding starts.","triggerScenarios":"Invoking `mvn quarkus:create -DbuildTool=<invalid>` or choosing an unsupported tool via the Quarkus CLI/code.quarkus.io flow that passes an unrecognized buildTool string.","commonSituations":"Typos like `-DbuildTool=mavin` or `-DbuildTool=Gradle` (case-sensitive lookup), older tooling passing tool names that were renamed, or scripting that interpolates an empty buildTool value.","solutions":["Use one of the listed accepted values, e.g. `-DbuildTool=maven`, `-DbuildTool=gradle`, or `-DbuildTool=gradle-kotlin-dsl`","Check spelling and case of the buildTool value","Omit `-DbuildTool` entirely to accept the default (maven)","If scripted, print/echo the variable being passed to confirm it is not empty"],"exampleFix":"// before\nmvn io.quarkus:quarkus-maven-plugin:create -DbuildTool=Gradle\n// after\nmvn io.quarkus:quarkus-maven-plugin:create -DbuildTool=gradle","handlingStrategy":"validation","validationCode":"Set<String> valid = Set.of(\"maven\", \"gradle\", \"gradle-kotlin-dsl\");\nif (!valid.contains(buildTool)) throw new IllegalArgumentException(\"buildTool must be one of \" + valid);","typeGuard":null,"tryCatchPattern":"try {\n    runCreateGoal(buildTool);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().startsWith(\"Choose a valid build tool\")) {\n        System.err.println(e.getMessage()); // lists accepted values\n    }\n}","preventionTips":["Always pass buildTool values from the documented enum list","Don't hardcode tool names in scripts; read them from a whitelist","Remember the lookup is exact/case-sensitive"],"tags":["validation","build-tool","project-scaffolding"],"backgroundTag":"invalid-argument-value","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"}