quarkusio/quarkus · error · IllegalStateException

This build tool does not support update ${buildTool}

Error message

This build tool does not support update ${buildTool}

What it means

getPropRewritePluginVersion() maps a BuildTool enum to the rewrite plugin version property for Maven or Gradle builds. If the project's build tool is anything else (e.g. no build files detected or an unsupported tool), it throws IllegalStateException("This build tool does not support update <buildTool>") because `quarkus update` recipe fetching only supports Maven and Gradle.

Source

Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/rewrite/QuarkusUpdatesRepository.java:139

                throw new RuntimeException("Failed to load recipes in artifact: " + gav, e);
            }
        }

        return new FetchResult(String.join(",", artifacts),
                recipes, propRewritePluginVersion);
    }

    private static String getPropRewritePluginVersion(Properties props, BuildTool buildTool) {
        switch (buildTool) {
            case MAVEN:
                return Optional.ofNullable(props.getProperty(PROP_REWRITE_MAVEN_PLUGIN_VERSION))
                        .orElse(DEFAULT_MAVEN_REWRITE_PLUGIN_VERSION);
            case GRADLE:
            case GRADLE_KOTLIN_DSL:
                return Optional.ofNullable(props.getProperty(PROP_REWRITE_GRADLE_PLUGIN_VERSION))
                        .orElse(DEFAULT_GRADLE_REWRITE_PLUGIN_VERSION);
            default:
                throw new IllegalStateException("This build tool does not support update " + buildTool);
        }
    }

    private static boolean isRecipeFile(Path p) {
        return p.getFileName().toString()
                .matches("^\\d\\H+.ya?ml$");
    }

    public static class FetchResult {

        private final String recipesGAV;
        private final List<String> recipes;
        private final String rewritePluginVersion;

        public FetchResult(String recipesGAV, List<String> recipes, String rewritePluginVersion) {
            this.recipesGAV = recipesGAV;
            this.rewritePluginVersion = rewritePluginVersion;
            this.recipes = recipes;

View on GitHub (pinned to e1c734241f)

Solutions

  1. Run `quarkus update` from the project root where a pom.xml or build.gradle(.kts) exists.
  2. Add the appropriate Maven or Gradle build file if the project genuinely uses one of those tools but the file is missing.
  3. Migrate the project to Maven or Gradle before using the rewrite-based update flow.
  4. Upgrade the Quarkus CLI if support for your build tool was added in a newer release.

Example fix

// before: project root without build files
$ cd ~/misc && quarkus update   # IllegalStateException
// after: run in the Maven project
$ cd ~/my-quarkus-app   # contains pom.xml
$ quarkus update
Defensive patterns

Strategy: validation

Validate before calling

if (buildTool != BuildTool.MAVEN && buildTool != BuildTool.GRADLE && buildTool != BuildTool.GRADLE_KOTLIN_DSL) {
    throw new IllegalStateException("quarkus update requires Maven or Gradle project; detected: " + buildTool);
}

Try / catch

try {
    String v = repo.pluginVersion(buildTool);
} catch (IllegalStateException e) {
    log.error("Run quarkus update from a project with pom.xml or build.gradle");
}

Prevention

When it happens

Trigger: Calling getPropRewritePluginVersion (via pluginVersion/fetchRecipes during `quarkus update`) on a project whose detected BuildTool is not MAVEN, GRADLE, or GRADLE_KOTLIN_DSL — the switch falls to the default branch.

Common situations: Running `quarkus update` in a directory with no pom.xml or Gradle build files; a project using an unsupported build system (SBT, Bazel, plain Ant); a misdetected build tool because both Maven and Gradle files are absent while the CLI infers a default.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/ce8b6e9b0634a4a7. Report an issue: GitHub.