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
- Run `mvn -X` to inspect the underlying BootstrapMavenException cause and fix settings.xml/repository configuration
- Validate ~/.m2/settings.xml (mirrors, profiles, localRepository path) and test repository connectivity
- Clear the corrupt local repository entry (`mvn dependency:purge-local-repository` or delete the offending artifact dir) and rebuild
- 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
- Keep ~/.m2/settings.xml valid and minimal
- Test repository connectivity before release builds
- Pin supported Maven/JDK versions in CI
- Avoid corrupting the local repo; use dependency:purge-local-repository on suspicion
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
- Unsupported format: ${format}
- Quarkus Gradle plugins require Gradle
- Either the `extension` or `extensions` parameter must be set
- Unable to add extensions
- Cannot specify both class and method name
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/bd045d123b91f6e2.
Report an issue: GitHub.