quarkusio/quarkus · error · RuntimeException

Failed to resolve extension ${coords}

Error message

Failed to resolve extension ${coords}

What it means

CreateProjectHelper.completeCatalog resolves user-supplied extension coordinates through Maven to inspect the extension jar. If Maven resolution throws BootstrapMavenException, it is rethrown as a RuntimeException with this message, meaning the requested extension artifact could not be downloaded or located in the configured repositories.

Source

Thrown at independent-projects/tools/devtools-common/src/main/java/io/quarkus/devtools/commands/CreateProjectHelper.java:78

     *
     * @param catalog original extension catalog
     * @param extensions extra extensions to add to the catalog
     * @param mvn Maven artifact resolver
     * @return complete extension catalog
     * @throws BootstrapMavenException in case of a failure to resolve extensions requested by the user
     */
    public static ExtensionCatalog completeCatalog(ExtensionCatalog catalog, Collection<String> extensions,
            MavenArtifactResolver mvn) {
        ExtensionCatalog.Mutable mutableCatalog = null;
        for (String extArg : extensions) {
            if (isFullArtifactCoords(extArg)) {
                var coords = ArtifactCoords.fromString(extArg.trim());
                final Path extJar;
                try {
                    extJar = mvn.resolve(new DefaultArtifact(coords.getGroupId(), coords.getArtifactId(),
                            coords.getClassifier(), coords.getType(), coords.getVersion())).getArtifact().getFile().toPath();
                } catch (BootstrapMavenException e) {
                    throw new RuntimeException("Failed to resolve extension " + coords, e);
                }
                final Extension ext = ExtensionMetadataUtil.applyExtensionMetadata(
                        PathTree.ofDirectoryOrArchive(extJar), visit -> {
                            try {
                                return Extension.fromFile(visit.getPath());
                            } catch (IOException e) {
                                throw new IllegalStateException(
                                        "Failed to parse Quarkus extension metadata " + visit.getPath());
                            }
                        });
                if (ext != null) {
                    if (mutableCatalog == null) {
                        mutableCatalog = catalog.mutable();
                    }
                    var i = mutableCatalog.getExtensions().iterator();
                    boolean add = true;
                    while (i.hasNext()) {
                        final ArtifactCoords catalogCoords = i.next().getArtifact();

View on GitHub (pinned to e1c734241f)

Solutions

  1. Verify the extension coordinates (groupId, artifactId, version) exist in the repository
  2. Check that the artifact version matches the Quarkus platform version or is published
  3. Ensure Maven repository settings (settings.xml, mirrors, proxies) allow resolution
  4. Test resolution manually with mvn dependency:get -Dartifact=group:artifact:version

Example fix

// before
--extension-id=acme:com.acme:acme-extensions:9.9.9  // nonexistent version
// after
--extension-id=acme:com.acme:acme-extensions:1.0.0  // published version
Defensive patterns

Strategy: try-catch

Validate before calling

ArtifactCoords coords = ArtifactCoords.fromString(extArg.trim());
mvn.resolve(new DefaultArtifact(coords.getGroupId(), coords.getArtifactId(), coords.getClassifier(), coords.getType(), coords.getVersion())); // pre-check resolution

Try / catch

try { createProjectHelper.completeCatalog(...); } catch (RuntimeException e) { if (e.getMessage().startsWith("Failed to resolve extension")) { log.error("Check coordinates/repositories/offline state", e.getCause()); } }

Prevention

When it happens

Trigger: Calling completeCatalogWithCoords / completeCatalog with an extension argument (extensionId:group:artifact:version) whose artifact cannot be resolved by the configured Maven resolver (wrong coordinates, version not in any repository, offline mode).

Common situations: Typos in extension coordinates; specifying a version that does not exist; missing custom repository configuration; no network access / corporate proxy; extension never published for the current Quarkus version.

Related errors


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