quarkusio/quarkus · error · IllegalStateException

The project does not import any Quarkus platform BOM

Error message

The project does not import any Quarkus platform BOM

What it means

ProjectUpdateInfos.resolveExtensionsUpdateInfo() and resolvePlatformUpdateInfo() require the current project state to import at least one Quarkus platform BOM, because update recommendations are expressed as changes to platform imports. checkProjectState() throws IllegalStateException when the current state has no platform BOMs.

Source

Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/ProjectUpdateInfos.java:87

        for (ArtifactCoords c : recommendedState.getPlatformBoms()) {
            final PlatformInfo importInfo = platformImports.compute(c.getKey(), (k, v) -> {
                if (v == null) {
                    return new PlatformInfo(null, c);
                }
                return new PlatformInfo(v.getImported(), c);
            });
            if (importInfo.isToBeImported()) {
                newImports.add(importInfo);
            } else if (importInfo.isVersionUpdateRecommended()) {
                importVersionUpdates.add(importInfo);
            }
        }
        return new ProjectPlatformUpdateInfo(platformImports, importVersionUpdates, newImports);
    }

    private static void checkProjectState(ProjectState currentState, ProjectState recommendedState) {
        if (currentState.getPlatformBoms().isEmpty()) {
            throw new IllegalStateException("The project does not import any Quarkus platform BOM");
        }
    }

    public static ProjectState resolveRecommendedState(ProjectState currentState, ExtensionCatalog recommendedCatalog,
            MessageWriter log) {
        if (currentState.getPlatformBoms().isEmpty()) {
            return currentState;
        }
        if (currentState.getExtensions().isEmpty()) {
            return currentState;
        }

        final ExtensionMapBuilder builder = new ExtensionMapBuilder();
        for (TopExtensionDependency dep : currentState.getExtensions()) {
            builder.add(new ExtensionUpdateInfoBuilder(dep));
        }

        for (Extension e : recommendedCatalog.getExtensions()) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Add the Quarkus platform BOM to dependencyManagement in your pom.xml (or equivalent in build.gradle)
  2. Use the Quarkus platform BOM version matching your intended Quarkus release (e.g. io.quarkus.platform:quarkus-bom:<version>)
  3. Verify how currentState was resolved: `quarkus:update` needs to resolve platform imports; ensure the build file is well-formed and resolvable
  4. If updating extensions without a platform is intended, don't use resolveExtensionsUpdateInfo/resolvePlatformUpdateInfo; they are platform-based APIs

Example fix

<!-- before: no platform import -->
<dependencies>...</dependencies>
<!-- after -->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>io.quarkus.platform</groupId>
      <artifactId>quarkus-bom</artifactId>
      <version>3.15.1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
Defensive patterns

Strategy: validation

Validate before calling

// before calling resolve*UpdateInfo
if (currentState.getPlatformBoms().isEmpty()) {
    throw new IllegalStateException(
        "Project must import a Quarkus platform BOM (io.quarkus.platform:quarkus-bom) before update");
}
ProjectUpdateInfos.resolvePlatformUpdateInfo(currentState, recommendedState);

Try / catch

try {
    ProjectUpdateInfos.resolveExtensionsUpdateInfo(currentState, recommendedState);
} catch (IllegalStateException e) {
    if (e.getMessage().contains("platform BOM")) {
        // instruct user to add quarkus-bom to dependencyManagement first
    } else throw e;
}

Prevention

When it happens

Trigger: Calling ProjectUpdateInfos.resolveExtensionsUpdateInfo(currentState, recommendedState) or resolvePlatformUpdateInfo(...) with a ProjectState built from a pom.xml that does not import io.quarkus.platform:quarkus-bom (or any platform BOM) in dependencyManagement.

Common situations: Projects that pinned individual Quarkus extension versions without importing quarkus-bom, projects converted from other stacks and missing the platform import, custom platform configuration removed from the pom, running `quarkus:update` on a non-Quarkus or partial project.

Related errors


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