{"record":{"id":"4d08247eddbde806","repo":"OpenAPITools/openapi-generator","slug":"build-tool-buildtool-is-not-supported-or-missp","errorCode":null,"errorMessage":"Build tool \"{buildTool}\" is not supported or misspelled.","messagePattern":"Build tool \"(.+?)\" is not supported or misspelled\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java","lineNumber":275,"sourceCode":"            this.wrapInHttpResponse = convertPropertyToBoolean(OPT_WRAP_IN_HTTP_RESPONSE);\n        }\n        writePropertyBack(OPT_WRAP_IN_HTTP_RESPONSE, wrapInHttpResponse);\n\n        if (additionalProperties.containsKey(OPT_GENERATE_OPERATION_ONLY_FOR_FIRST_TAG)) {\n            this.generateOperationOnlyForFirstTag = convertPropertyToBoolean(OPT_GENERATE_OPERATION_ONLY_FOR_FIRST_TAG);\n        }\n        writePropertyBack(OPT_GENERATE_OPERATION_ONLY_FOR_FIRST_TAG, generateOperationOnlyForFirstTag);\n\n        // Get enum properties\n        if (additionalProperties.containsKey(OPT_BUILD)) {\n            switch ((String) additionalProperties.get(OPT_BUILD)) {\n                case OPT_BUILD_GRADLE:\n                case OPT_BUILD_MAVEN:\n                case OPT_BUILD_ALL:\n                    this.buildTool = (String) additionalProperties.get(OPT_BUILD);\n                    break;\n                default:\n                    throw new RuntimeException(\"Build tool \\\"\" + additionalProperties.get(OPT_BUILD) + \"\\\" is not supported or misspelled.\");\n            }\n        }\n        additionalProperties.put(OPT_BUILD, buildTool);\n\n        if (additionalProperties.containsKey(OPT_TEST)) {\n            switch ((String) additionalProperties.get(OPT_TEST)) {\n                case OPT_TEST_JUNIT:\n                case OPT_TEST_SPOCK:\n                    this.testTool = (String) additionalProperties.get(OPT_TEST);\n                    break;\n                default:\n                    throw new RuntimeException(\"Test tool \\\"\" + additionalProperties.get(OPT_TEST) + \"\\\" is not supported or misspelled.\");\n            }\n        }\n        additionalProperties.put(OPT_TEST, testTool);\n        if (testTool.equals(OPT_TEST_JUNIT)) {\n            additionalProperties.put(\"isTestJunit\", true);\n        } else if (testTool.equals(OPT_TEST_SPOCK)) {","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaMicronautAbstractCodegen.java#L257-L293","documentation":"Thrown by JavaMicronautAbstractCodegen.processOpts when the buildTool additional property is present but not one of the Micronaut generator's supported values: 'gradle', 'maven', or 'all' (both build files). The switch on the raw string has no looser fallback, so any typo or unsupported tooling rejects generation before templates render. A sibling switch validates testTool as 'junit' or 'spock' the same way.","triggerScenarios":"Passing --additional-properties buildTool=gradlew, buildTool=gradle-kotlin, buildTool=mvn, or empty string to -g java-micronaut* generators (client/server). Also triggered via Gradle plugin configOptions { buildTool = 'Gradle' } with wrong casing from Groovy configs, or stale config files using values removed in newer generator versions.","commonSituations":"Maven users type the mvn binary name instead of 'maven'. Kotlin-DSL Gradle users expect 'gradle-kotlin'/'kotlin' support that does not exist and must post-process the .gradle output. Case sensitivity bites when the value comes from a templated CI variable ('Gradle').","solutions":["Use exactly one of: buildTool=gradle, buildTool=maven, or buildTool=all","Check the testTool value too — only junit and spock are accepted","For Kotlin-dsl Gradle files, generate with buildTool=gradle and rename/adjust the generated build script afterwards","Verify values against `openapi-generator-cli config-help -g java-micronaut-server` after generator upgrades"],"exampleFix":"# before\nopenapi-generator-cli generate -g java-micronaut-server -i api.yaml \\\n  --additional-properties buildTool=gradlew\n\n# after\nopenapi-generator-cli generate -g java-micronaut-server -i api.yaml \\\n  --additional-properties buildTool=gradle","handlingStrategy":"validation","validationCode":"Set<String> builds = Set.of(\"gradle\", \"maven\", \"all\");\nString buildTool = String.valueOf(opts.getOrDefault(\"buildTool\", \"gradle\"));\nif (!builds.contains(buildTool)) {\n    throw new IllegalArgumentException(\"buildTool must be one of \" + builds + \", got: \" + buildTool);\n}\nSet<String> tests = Set.of(\"junit\", \"spock\");\nString testTool = String.valueOf(opts.getOrDefault(\"testTool\", \"junit\"));\nif (!tests.contains(testTool)) {\n    throw new IllegalArgumentException(\"testTool must be one of \" + tests + \", got: \" + testTool);\n}","typeGuard":null,"tryCatchPattern":"try {\n    generator.generate();\n} catch (RuntimeException e) {\n    if (e.getMessage() != null && (e.getMessage().contains(\"Build tool\") || e.getMessage().contains(\"Test tool\"))) {\n        throw new ConfigException(\"Micronaut generator rejected buildTool/testTool: \" + e.getMessage(), e);\n    }\n    throw e;\n}","preventionTips":["Lowercase and whitelist buildTool/testTool values at config load time","Use the tool names (maven, gradle), not binary names (mvn, gradlew)","For Kotlin-dsl Gradle, generate with 'gradle' and post-process the script rather than inventing unsupported values"],"tags":["java","micronaut","openapi-generator","gradle","maven","build-tools","configuration","option-validation"],"backgroundTag":"invalid-build-tool-option","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}