{"record":{"id":"b2a3031b7e748e40","repo":"quarkusio/quarkus","slug":"buildtool-is-not-supported-yet","errorCode":null,"errorMessage":"${buildTool} is not supported yet","messagePattern":"(.+?) is not supported yet","errorType":"exception","errorClass":"QuarkusUpdateException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdateCommand.java","lineNumber":64,"sourceCode":"\n    public static String ADDITIONAL_SOURCE_FILES = String.join(\",\", ADDITIONAL_SOURCE_FILES_SET);\n\n    public static String goal(boolean dryRun) {\n        return dryRun ? \"dryRun\" : \"run\";\n    }\n\n    public static void handle(MessageWriter log, BuildTool buildTool, Path baseDir,\n            String rewritePluginVersion, String recipesGAV, Path recipe, Path logFile, boolean dryRun) {\n        switch (buildTool) {\n            case MAVEN:\n                runMavenUpdate(log, baseDir, rewritePluginVersion, recipesGAV, recipe, logFile, dryRun);\n                break;\n            case GRADLE:\n            case GRADLE_KOTLIN_DSL:\n                runGradleUpdate(log, baseDir, rewritePluginVersion, recipesGAV, recipe, logFile, dryRun);\n                break;\n            default:\n                throw new QuarkusUpdateException(buildTool.getKey() + \" is not supported yet\");\n        }\n    }\n\n    private static void runMavenUpdate(MessageWriter log, Path baseDir, String rewritePluginVersion, String recipesGAV,\n            Path recipe,\n            Path logFile, boolean dryRun) {\n        final String mvnBinary = findMvnBinary(baseDir);\n        Map<String, List<String>> commands = new LinkedHashMap<>();\n        commands.put(getRewriteCommandName(rewritePluginVersion, dryRun),\n                getMavenUpdateCommand(mvnBinary, rewritePluginVersion, recipesGAV, recipe, dryRun));\n\n        // format the sources\n        if (!dryRun) {\n            commands.put(\"process-sources\", getMavenProcessSourcesCommand(mvnBinary));\n        }\n\n        executeRewrite(baseDir, commands, log, logFile);\n    }","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdateCommand.java#L46-L82","documentation":"QuarkusUpdateCommand.handle() drives the OpenRewrite-based project update. It only supports BuildTool values MAVEN, GRADLE, and GRADLE_KOTLIN_DSL; for any other build tool it throws QuarkusUpdateException with the build tool key and \"is not supported yet\". This is an intentional guard: the update command generates Maven or Gradle rewrite invocations and has no recipe runner for other build systems.","triggerScenarios":"Calling QuarkusUpdateCommand.handle(log, buildTool, baseDir, rewritePluginVersion, recipesGAV, recipe, logFile, dryRun) with a BuildTool other than MAVEN, GRADLE, or GRADLE_KOTLIN_DSL (e.g. a custom/unknown key), typically via `quarkus update` on a project whose build tool cannot be resolved to Maven or Gradle.","commonSituations":"Running `quarkus update` in a directory that is not a Maven or Gradle project (e.g. a bare source tree, an sbt/Bazel project, or a mis-detected project where quarkus.cli.properties / project metadata yields an unsupported build tool).","solutions":["Run `quarkus update` from the root of a Maven (pom.xml) or Gradle (build.gradle / build.gradle.kts) project.","Check which build tool was detected for the project and ensure a valid pom.xml or build.gradle exists at the project root.","For projects on other build systems, perform the update manually following the Quarkus migration guide (https://quarkus.io/guides/update-migrating) instead of the automated rewrite command."],"exampleFix":"// before: running update in an unsupported project\n$ quarkus update\nQuarkusUpdateException: maven_sbt is not supported yet\n\n// after: ensure the project root has a supported build file\n$ ls pom.xml   # or build.gradle / build.gradle.kts\n$ quarkus update","handlingStrategy":"validation","validationCode":"import io.quarkus.devtools.project.BuildTool;\nimport io.quarkus.devtools.project.update.rewrite.QuarkusUpdateCommand;\n\nSet<BuildTool> SUPPORTED = Set.of(BuildTool.MAVEN, BuildTool.GRADLE, BuildTool.GRADLE_KOTLIN_DSL);\n\nif (buildTool == null || !SUPPORTED.contains(buildTool)) {\n    throw new IllegalArgumentException(\n        \"quarkus update supports only Maven or Gradle projects; detected: \"\n            + (buildTool == null ? \"unknown\" : buildTool.getKey()));\n}\nQuarkusUpdateCommand.handle(log, buildTool, baseDir, rewritePluginVersion, recipesGAV, recipe, logFile, dryRun);","typeGuard":"static boolean isSupportedBuildTool(BuildTool t) {\n    return t == BuildTool.MAVEN || t == BuildTool.GRADLE || t == BuildTool.GRADLE_KOTLIN_DSL;\n}","tryCatchPattern":"try {\n    QuarkusUpdateCommand.handle(log, buildTool, baseDir, rewritePluginVersion, recipesGAV, recipe, logFile, dryRun);\n} catch (QuarkusUpdateException e) {\n    if (e.getMessage() != null && e.getMessage().endsWith(\"is not supported yet\")) {\n        log.error(\"Project uses build tool '%s'; migrate manually per the Quarkus migration guide.\", e.getMessage());\n    } else {\n        throw e;\n    }\n}","preventionTips":["Only invoke the update command from a project root containing pom.xml or build.gradle/.kts.","Check the detected build tool (BuildTool detection) before launching the update and fail fast with a clear message.","Document that projects using other build systems must migrate manually per the Quarkus migration guide."],"tags":["build-tool","unsupported-operation","update-command","openrewrite"],"backgroundTag":"unsupported-build-tool","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"}