{"record":{"id":"0176bc8cab58e3d4","repo":"quarkusio/quarkus","slug":"failed-to-create-project-because-of-invalid-extens-0176bc","errorCode":null,"errorMessage":"Failed to create project because of invalid extensions","messagePattern":"Failed to create project because of invalid extensions","errorType":"exception","errorClass":"QuarkusCommandException","httpStatus":null,"severity":"error","filePath":"independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/CreateProjectCommandHandler.java","lineNumber":301,"sourceCode":"\n        return QuarkusCommandOutcome.success();\n    }\n\n    private static void setQuarkusProperties(QuarkusCommandInvocation invocation, ExtensionCatalog catalog) {\n        var quarkusProps = ToolsUtils.readQuarkusProperties(catalog);\n        quarkusProps.forEach((k, v) -> {\n            final String name = k.toString();\n            if (!invocation.hasValue(name)) {\n                invocation.setValue(name, v.toString());\n            }\n        });\n    }\n\n    private List<Extension> computeRequiredExtensions(ExtensionCatalog catalog,\n            final Set<String> extensionsQuery, MessageWriter log) throws QuarkusCommandException {\n        final List<Extension> extensionsToAdd = computeExtensionsFromQuery(catalog, extensionsQuery, log);\n        if (extensionsToAdd == null) {\n            throw new QuarkusCommandException(\"Failed to create project because of invalid extensions\");\n        }\n        return extensionsToAdd;\n    }\n\n    private static List<ExtensionCatalog> getExtensionOrigins(ExtensionCatalog extensionCatalog,\n            List<Extension> extensionsToAdd)\n            throws QuarkusCommandException {\n\n        if (extensionsToAdd.isEmpty() && extensionCatalog.isPlatform()) {\n            return List.of(extensionCatalog);\n        }\n\n        // we add quarkus-core as a selected extension here only to include the quarkus-bom\n        // in the list of platforms. quarkus-core won't be added to the generated POM though.\n        final Extension quarkusCore = findQuarkusCore(extensionCatalog);\n        final List<ExtensionOrigins> originsWithPreferences;\n        if (extensionsToAdd.isEmpty()) {\n            // if no extensions were requested, we select the core BOM","sourceCodeStart":283,"sourceCodeEnd":319,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/handlers/CreateProjectCommandHandler.java#L283-L319","documentation":"computeRequiredExtensions throws QuarkusCommandException('Failed to create project because of invalid extensions') when computeExtensionsFromQuery returns null, i.e. at least one extension keyword could not be resolved against the extension catalog.","triggerScenarios":"Creating a project with -x/--extensions values that match no catalog entry or are ambiguous, during CreateProjectCommandHandler execution (via extensionsToAdd).","commonSituations":"Typos in extension artifact ids; using old names after platform renames; keywords matching multiple extensions without exact name/GAV; offline with no registry access.","solutions":["Replace keywords with exact extension names or full GAV coordinates","Run the extension list command to confirm available names for the configured platform","Check the configured Quarkus version/registry contains the requested extensions","Split the query to find which specific keyword fails and fix it"],"exampleFix":"// before\nquarkus create app -x hibernate x\n// after\nquarkus create app -x quarkus-hibernate-orm x","handlingStrategy":"validation","validationCode":"for (String q : extensionsQuery) {\n    List<Extension> hits = computeExtensionsFromQuery(catalog, Set.of(q), log);\n    if (hits == null || hits.isEmpty()) throw new IllegalArgumentException(\"Unresolvable extension: \" + q);\n}","typeGuard":null,"tryCatchPattern":"try { List<Extension> exts = computeRequiredExtensions(catalog, query, log); } catch (QuarkusCommandException e) { /* fix the extension query before retrying */ }","preventionTips":["Resolve each keyword individually to find the failing one","Use canonical artifact ids (post-rename names) in CI scripts","Pin platform versions so catalog contents are deterministic","Check network/registry availability before offline runs"],"tags":["cli","extensions","validation"],"backgroundTag":"invalid-extension-query","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"}