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 profilesView on GitHub (pinned to e1c734241f)
Solutions
- Validate/repair ~/.m2/settings.xml (run mvn help:effective-settings to expose XML problems)
- Ensure HOME and the local repository path (localRepository) exist and are writable
- Check the caused-by BootstrapMavenException for the specific configuration element that failed to parse
- 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
- Keep ~/.m2/settings.xml valid XML; test with help:effective-settings
- Ensure HOME and localRepository paths exist and are writable in CI
- Avoid hand-editing settings.xml without validating afterwards
- Version-control a known-good settings template for CI
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
- Unsupported format: ${format}
- Either the `extension` or `extensions` parameter must be set
- Cannot specify both class and method name
- The project artifact's extension is '${extension}' while thi
- Specifying a stream requires the Quarkus extension registry
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/3eb6390d80a720a4.
Report an issue: GitHub.