quarkusio/quarkus · error · MojoExecutionException

Failed to initialize Maven artifact resolver

Error message

Failed to initialize Maven artifact resolver

What it means

This MojoExecutionException wraps a BootstrapMavenException thrown while constructing a MavenArtifactResolver in QuarkusProjectStateMojoBase.catalogArtifactResolver. The resolver initializes the Maven repository system session for catalog lookups; failures typically come from invalid settings.xml, bad repository configuration, or bootstrap context problems. The message indicates tooling-level Maven bootstrap failure, not a missing artifact.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/QuarkusProjectStateMojoBase.java:136

    @Override
    protected MavenArtifactResolver catalogArtifactResolver() throws MojoExecutionException {
        if (getLog().isDebugEnabled()) {
            return artifactResolver();
        } else {
            try {
                final MavenArtifactResolver baseResolver = artifactResolver();
                final DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(
                        baseResolver.getSession());
                session.setTransferListener(new QuietMavenTransferListener());
                final BootstrapMavenContext ctx = new BootstrapMavenContext(BootstrapMavenContext.config()
                        .setRepositorySystem(baseResolver.getSystem())
                        .setRemoteRepositoryManager(baseResolver.getRemoteRepositoryManager())
                        .setRemoteRepositories(baseResolver.getRepositories())
                        .setWorkspaceDiscovery(false)
                        .setRepositorySystemSession(session));
                return new MavenArtifactResolver(ctx);
            } catch (BootstrapMavenException e) {
                throw new MojoExecutionException("Failed to initialize Maven artifact resolver", e);
            }
        }
    }

    @Override
    protected MavenArtifactResolver initArtifactResolver() throws MojoExecutionException {
        return workspaceProvider.createArtifactResolver(BootstrapMavenContext.config()
                .setUserSettings(session.getRequest().getUserSettingsFile())
                .setRemoteRepositoryManager(workspaceProvider.getRemoteRepositoryManager())
                // The system needs to be initialized with the bootstrap model builder to properly interpolate system properties set on the command line
                // e.g. -Dquarkus.platform.version=xxx
                //.setRepositorySystem(workspaceProvider.getRepositorySystem())
                // The session should be initialized with the loaded workspace
                //.setRepositorySystemSession(repoSession)
                .setRemoteRepositories(repos)
                // To support multi-module projects that haven't been installed
                .setPreferPomsFromWorkspace(true)
                // to support profiles

View on GitHub (pinned to e1c734241f)

Solutions

  1. Validate/repair ~/.m2/settings.xml (run mvn help:effective-settings to expose XML problems)
  2. Ensure HOME and the local repository path (localRepository) exist and are writable
  3. Check the caused-by BootstrapMavenException for the specific configuration element that failed to parse
  4. Simplify/remove custom mirrors and profiles in settings.xml, then re-run the goal

Example fix

// before (broken settings.xml)
<mirror><id>corp</id><url>htp://bad-url</url>...
// after
<mirror><id>corp</id><url>https://repo.corp.example/maven</url><mirrorOf>central</mirrorOf></mirror>
Defensive patterns

Strategy: try-catch

Validate before calling

// Validate settings.xml parses before running tooling:
// mvn help:effective-settings -q >/dev/null && echo OK

Try / catch

try {
    MavenArtifactResolver resolver = new MavenArtifactResolver(ctx);
} catch (BootstrapMavenException e) {
    // log e; validate settings.xml, HOME, and localRepository, then retry
}

Prevention

When it happens

Trigger: Calling catalogArtifactResolver (lazily, memoized) when MavenArtifactResolver's MavenContext cannot be built — malformed ~/.m2/settings.xml, unparseable repository config, missing local repository path, or invalid remote repository definitions.

Common situations: Corrupted or hand-edited ~/.m2/settings.xml; invalid XML from a corporate mirror template; HOME not set in CI so settings.xml can't be located; conflicting localRepository configuration.

Related errors


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