quarkusio/quarkus · error · MojoExecutionException

Failed to resolve the Quarkus extension catalog

Error message

Failed to resolve the Quarkus extension catalog

What it means

resolveExtensionCatalog resolves the Quarkus extension catalog either from configured registries or by merging the platforms imported by the project. Any exception while resolving the catalog from registries is wrapped in this MojoExecutionException, meaning the list of available extensions/platforms could not be determined.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/QuarkusProjectMojoBase.java:138

        doExecute(quarkusProject, getMessageWriter());
    }

    protected MessageWriter getMessageWriter() {
        return log == null ? log = new MojoMessageWriter(getLog()) : log;
    }

    protected Path baseDir() {
        return project == null || project.getBasedir() == null ? Paths.get("").normalize().toAbsolutePath()
                : project.getBasedir().toPath();
    }

    private ExtensionCatalog resolveExtensionCatalog() throws MojoExecutionException {
        final ExtensionCatalogResolver catalogResolver = getExtensionCatalogResolver();
        if (catalogResolver.hasRegistries()) {
            try {
                return catalogResolver.resolveExtensionCatalog(getImportedPlatforms());
            } catch (Exception e) {
                throw new MojoExecutionException("Failed to resolve the Quarkus extension catalog", e);
            }
        }
        return ToolsUtils.mergePlatforms(collectImportedPlatforms(), catalogArtifactResolver());
    }

    protected ExtensionCatalogResolver getExtensionCatalogResolver() throws MojoExecutionException {
        return catalogResolver == null ? catalogResolver = initExtensionCatalogResolver() : catalogResolver;
    }

    private ExtensionCatalogResolver initExtensionCatalogResolver() throws MojoExecutionException {
        if (!QuarkusProjectHelper.isRegistryClientEnabled()) {
            return ExtensionCatalogResolver.empty();
        }
        final ExtensionCatalogResolver catalogResolver;
        try {
            catalogResolver = QuarkusProjectHelper.getCatalogResolver(catalogArtifactResolver(), getMessageWriter());
            if (refresh) {
                catalogResolver.clearRegistryCache();

View on GitHub (pinned to e1c734241f)

Solutions

  1. Verify the Quarkus platform version in the pom matches a version published in the registry
  2. Check network/proxy access to registry.quarkus.io and inspect the wrapped cause for details
  3. Fix or remove a broken custom registry configuration and retry with a registry cache refresh

Example fix

// before (nonexistent platform version)
<quarkus.platform.version>999.0.0</quarkus.platform.version>
// after
<quarkus.platform.version>3.15.1</quarkus.platform.version>
Defensive patterns

Strategy: try-catch

Validate before calling

// verify platform version exists in the registry before building
// mvn dependency:get -Dartifact=io.quarkus.platform:quarkus-bom:${quarkus.platform.version}:pom

Try / catch

try {
    mojo.execute();
} catch (MojoExecutionException e) {
    if (e.getMessage().equals("Failed to resolve the Quarkus extension catalog")) {
        Throwable cause = e.getCause();
        // inspect cause: fix registry URL / platform version / connectivity, then retry
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: Running a Quarkus MoJo when catalogResolver.resolveExtensionCatalog(getImportedPlatforms()) throws — e.g. the registry/platform descriptor cannot be downloaded or parsed for the imported platform coordinates.

Common situations: Platform BOM coordinates changed after a Quarkus upgrade; a custom registry returns malformed metadata; offline build attempting to reach the registry; the io.quarkus.platform version referenced in the pom no longer exists in the registry.

Related errors


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