{"record":{"id":"1dc7bad8ba4c3642","repo":"quarkusio/quarkus","slug":"the-project-does-not-import-any-quarkus-platform-b","errorCode":null,"errorMessage":"The project does not import any Quarkus platform BOM","messagePattern":"The project does not import any Quarkus platform BOM","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/ProjectUpdateInfos.java","lineNumber":87,"sourceCode":"        for (ArtifactCoords c : recommendedState.getPlatformBoms()) {\n            final PlatformInfo importInfo = platformImports.compute(c.getKey(), (k, v) -> {\n                if (v == null) {\n                    return new PlatformInfo(null, c);\n                }\n                return new PlatformInfo(v.getImported(), c);\n            });\n            if (importInfo.isToBeImported()) {\n                newImports.add(importInfo);\n            } else if (importInfo.isVersionUpdateRecommended()) {\n                importVersionUpdates.add(importInfo);\n            }\n        }\n        return new ProjectPlatformUpdateInfo(platformImports, importVersionUpdates, newImports);\n    }\n\n    private static void checkProjectState(ProjectState currentState, ProjectState recommendedState) {\n        if (currentState.getPlatformBoms().isEmpty()) {\n            throw new IllegalStateException(\"The project does not import any Quarkus platform BOM\");\n        }\n    }\n\n    public static ProjectState resolveRecommendedState(ProjectState currentState, ExtensionCatalog recommendedCatalog,\n            MessageWriter log) {\n        if (currentState.getPlatformBoms().isEmpty()) {\n            return currentState;\n        }\n        if (currentState.getExtensions().isEmpty()) {\n            return currentState;\n        }\n\n        final ExtensionMapBuilder builder = new ExtensionMapBuilder();\n        for (TopExtensionDependency dep : currentState.getExtensions()) {\n            builder.add(new ExtensionUpdateInfoBuilder(dep));\n        }\n\n        for (Extension e : recommendedCatalog.getExtensions()) {","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/project/update/ProjectUpdateInfos.java#L69-L105","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Add the Quarkus platform BOM to dependencyManagement in your pom.xml (or equivalent in build.gradle)","Use the Quarkus platform BOM version matching your intended Quarkus release (e.g. io.quarkus.platform:quarkus-bom:<version>)","Verify how currentState was resolved: `quarkus:update` needs to resolve platform imports; ensure the build file is well-formed and resolvable","If updating extensions without a platform is intended, don't use resolveExtensionsUpdateInfo/resolvePlatformUpdateInfo; they are platform-based APIs"],"exampleFix":"<!-- before: no platform import -->\n<dependencies>...</dependencies>\n<!-- after -->\n<dependencyManagement>\n  <dependencies>\n    <dependency>\n      <groupId>io.quarkus.platform</groupId>\n      <artifactId>quarkus-bom</artifactId>\n      <version>3.15.1</version>\n      <type>pom</type>\n      <scope>import</scope>\n    </dependency>\n  </dependencies>\n</dependencyManagement>","handlingStrategy":"validation","validationCode":"// before calling resolve*UpdateInfo\nif (currentState.getPlatformBoms().isEmpty()) {\n    throw new IllegalStateException(\n        \"Project must import a Quarkus platform BOM (io.quarkus.platform:quarkus-bom) before update\");\n}\nProjectUpdateInfos.resolvePlatformUpdateInfo(currentState, recommendedState);","typeGuard":null,"tryCatchPattern":"try {\n    ProjectUpdateInfos.resolveExtensionsUpdateInfo(currentState, recommendedState);\n} catch (IllegalStateException e) {\n    if (e.getMessage().contains(\"platform BOM\")) {\n        // instruct user to add quarkus-bom to dependencyManagement first\n    } else throw e;\n}","preventionTips":["Always import quarkus-bom in dependencyManagement instead of pinning individual extension versions","Verify the build file resolves platform imports before running quarkus:update","Keep one platform BOM version aligned with your Quarkus release","For Gradle, use the io.quarkus.platform plugin or enforcedPlatform"],"tags":["platform-bom","maven","project-update","configuration"],"backgroundTag":"missing-platform-bom-import","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}