quarkusio/quarkus · error · MojoExecutionException

Failed to initialize Maven artifact resolver

Error message

Failed to initialize Maven artifact resolver

What it means

ExtensionDescriptorMojo lazily creates a MavenArtifactResolver to resolve artifacts from the Maven repository system. Initialization delegates to BootstrapMavenContext; if the Maven environment cannot be bootstrapped (bad settings.xml, invalid repo config, corrupt local repo), a BootstrapMavenException is thrown and wrapped in this MojoExecutionException.

Source

Thrown at independent-projects/extension-maven-plugin/src/main/java/io/quarkus/maven/ExtensionDescriptorMojo.java:1418

    private interface NodeHandler {
        void handle(Log log, int depth, Node n, List<ArtifactKey> collected);
    }

    private MavenArtifactResolver resolver() throws MojoExecutionException {
        if (resolver == null) {
            final DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(repoSession);
            session.setWorkspaceReader(workspaceProvider.workspace());
            try {
                final BootstrapMavenContext ctx = new BootstrapMavenContext(BootstrapMavenContext.config()
                        .setRepositorySystem(repoSystem)
                        .setRemoteRepositoryManager(remoteRepoManager)
                        .setRepositorySystemSession(session)
                        .setRemoteRepositories(repos)
                        .setPreferPomsFromWorkspace(true)
                        .setCurrentProject(workspaceProvider.origin()));
                resolver = new MavenArtifactResolver(ctx);
            } catch (BootstrapMavenException e) {
                throw new MojoExecutionException("Failed to initialize Maven artifact resolver", e);
            }
        }
        return resolver;
    }

    private File resolve(org.eclipse.aether.artifact.Artifact a) throws MojoExecutionException {
        try {
            return resolver().resolve(a).getArtifact().getFile();
        } catch (MojoExecutionException e) {
            throw e;
        } catch (Exception e) {
            throw new MojoExecutionException("Failed to resolve " + a, e);
        }
    }
}

View on GitHub (pinned to e1c734241f)

Solutions

  1. Run `mvn -X` to inspect the underlying BootstrapMavenException cause and fix settings.xml/repository configuration
  2. Validate ~/.m2/settings.xml (mirrors, profiles, localRepository path) and test repository connectivity
  3. Clear the corrupt local repository entry (`mvn dependency:purge-local-repository` or delete the offending artifact dir) and rebuild
  4. Verify the Maven/JDK version matches Quarkus build requirements

Example fix

// before: broken settings.xml pointing at dead mirror
<mirror><url>https://dead-nexus.example.com/...</url></mirror>
// after: correct or remove the mirror entry in ~/.m2/settings.xml
<mirror><url>https://repo.maven.apache.org/maven2</url></mirror>
Defensive patterns

Strategy: try-catch

Validate before calling

// check Maven env before the build
File settings = new File(System.getProperty("user.home"), ".m2/settings.xml");
if (settings.exists() && !new SettingsReader().parses(settings)) {
    throw new IllegalStateException("Invalid ~/.m2/settings.xml");
}

Try / catch

try { resolver = new MavenArtifactResolver(ctx); } catch (BootstrapMavenException e) { throw new MojoExecutionException("Failed to initialize Maven artifact resolver", e); } // always log/report e.getCause()

Prevention

When it happens

Trigger: Running the extension-descriptor Maven goal when MavenArtifactResolver's constructor throws BootstrapMavenException, e.g. because the Maven session, repositories, or workspace origin cannot be bootstrapped.

Common situations: Malformed ~/.m2/settings.xml, unreachable repository manager, invalid mirror/profile configuration, corrupted local repository metadata, or a mismatched Maven version when building a Quarkus extension.

Related errors


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