quarkusio/quarkus · error · IllegalStateException

This feature is not yet implemented outside of the Gradle Pl

Error message

This feature is not yet implemented outside of the Gradle Plugin.

What it means

GenericGradleBuildFile.getInstalled() is an ExtensionManager implementation that intentionally throws IllegalStateException, because enumerating installed extensions requires the Gradle API which is only available inside the Gradle plugin, not in standalone devtools processes (see the TODO in the source).

Source

Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/buildfile/GenericGradleBuildFile.java:18

package io.quarkus.devtools.project.buildfile;

import java.io.IOException;
import java.util.Collection;

import io.quarkus.devtools.project.extensions.ExtensionInstallPlan;
import io.quarkus.devtools.project.extensions.ExtensionManager;
import io.quarkus.maven.dependency.ArtifactCoords;
import io.quarkus.maven.dependency.ArtifactKey;

/**
 * TODO We need to find a way to use the gradle api outside of a gradle plugin
 */
abstract class GenericGradleBuildFile implements ExtensionManager {

    @Override
    public Collection<ArtifactCoords> getInstalled() throws IOException {
        throw new IllegalStateException("This feature is not yet implemented outside of the Gradle Plugin.");
    }

    @Override
    public Collection<ArtifactCoords> getInstalledPlatforms() throws IOException {
        throw new IllegalStateException("This feature is not yet implemented outside of the Gradle Plugin.");
    }

    @Override
    public InstallResult install(Collection<ArtifactCoords> coords) throws IOException {
        throw new IllegalStateException("This feature is not yet implemented outside of the Gradle Plugin.");
    }

    @Override
    public InstallResult install(ExtensionInstallPlan request) throws IOException {
        throw new IllegalStateException("This feature is not yet implemented outside of the Gradle Plugin.");
    }

    @Override

View on GitHub (pinned to e1c734241f)

Solutions

  1. Run the equivalent operation through the Gradle plugin/tasks (e.g. the Quarkus Gradle plugin's extension tasks) instead of the standalone API.
  2. Inspect build.gradle / the quarkus platform BOM dependency manually to determine installed extensions.
  3. Use the Quarkus Gradle plugin's listExtensions task: ./gradlew quarkusListExtensions or inspect ./gradlew quarkusDependencies if available.

Example fix

// before
// devtools API on gradle project
extManager.getInstalled(); // IllegalStateException
// after
// Gradle build
// ./gradlew quarkusListExtensions
Defensive patterns

Strategy: type-guard

Validate before calling

if (extManager instanceof GenericGradleBuildFile) {
    throw new UnsupportedOperationException("getInstalled() is unsupported outside the Gradle plugin");
}

Type guard

boolean supportsProgrammaticListing(ExtensionManager m) {
    return !(m instanceof GenericGradleBuildFile);
}

Try / catch

try {
    extManager.getInstalled();
} catch (IllegalStateException e) {
    if (e.getMessage().contains("not yet implemented outside of the Gradle Plugin")) {
        // switch to Gradle-plugin task or manual build.gradle inspection
    }
}

Prevention

When it happens

Trigger: Calling getInstalled() on a GenericGradleBuildFile outside a Gradle plugin execution — e.g. invoking the Quarkus CLI/devtools API directly against a Gradle project where the extension manager is backed by GenericGradleBuildFile.

Common situations: Listing installed Quarkus extensions on a Gradle project via the devtools API instead of Gradle tasks; IDE tools or scripts that assume Maven-style extension listing works for Gradle too.

Related errors


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