quarkusio/quarkus · error · IllegalStateException

Failed to initialize Quarkus bootstrap Maven resolver

Error message

Failed to initialize Quarkus bootstrap Maven resolver

What it means

JBangBuilderImpl.postBuild() initializes the bootstrap Maven resolver (remote repositories, repository system session) via the bootstrap Maven context. If BootstrapMavenException is thrown during that initialization it is rethrown as IllegalStateException("Failed to initialize Quarkus bootstrap Maven resolver").

Source

Thrown at independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/jbang/JBangBuilderImpl.java:54

            boolean nativeImage) {
        final MavenArtifactResolver quarkusResolver;
        try {
            final BootstrapMavenContext mvnCtx = new BootstrapMavenContext(BootstrapMavenContext.config()
                    .setCurrentProject(pomFile.getParent().toString()));
            final List<RemoteRepository> remoteRepos = new ArrayList<>(mvnCtx.getRemoteRepositories());

            repositories.forEach(repo -> {
                remoteRepos.add(new RemoteRepository.Builder(repo.getKey(), "default", repo.getValue()).build());
            });

            quarkusResolver = MavenArtifactResolver.builder()
                    .setRepositorySystem(mvnCtx.getRepositorySystem())
                    .setRepositorySystemSession(mvnCtx.getRepositorySystemSession())
                    .setRemoteRepositoryManager(mvnCtx.getRemoteRepositoryManager())
                    .setRemoteRepositories(remoteRepos)
                    .build();
        } catch (BootstrapMavenException e) {
            throw new IllegalStateException("Failed to initialize Quarkus bootstrap Maven resolver", e);
        }

        try {
            Path target = Files.createTempDirectory("quarkus-jbang");
            final ResolvedArtifactDependency appArtifact = new ResolvedArtifactDependency("dev.jbang.user", "quarkus", null,
                    "jar", "999-SNAPSHOT", appClasses);
            final QuarkusBootstrap.Builder builder = QuarkusBootstrap.builder()
                    .setBaseClassLoader(JBangBuilderImpl.class.getClassLoader())
                    .setMavenArtifactResolver(quarkusResolver)
                    .setProjectRoot(pomFile.getParent())
                    .setTargetDirectory(target)
                    .setManagingProject(new GACTV("io.quarkus", "quarkus-bom", "", "pom", getQuarkusVersion()))
                    .setForcedDependencies(dependencies.stream().map(s -> {
                        String[] parts = s.getKey().split(":");
                        // The format of maven coordinate used in what jbang calls `canonical` form.
                        // The form is described here: https://github.com/jbangdev/jbang/blob/main/src/main/java/dev/jbang/dependencies/MavenCoordinate.java#L118
                        // Despite the fact that is non standard it's still used for compatibility reasons by the IntegrationManager:
                        // https://github.com/jbangdev/jbang/blob/main/src/main/java/dev/jbang/spi/IntegrationManager.java#L73

View on GitHub (pinned to e1c734241f)

Solutions

  1. Run with the cause's stack trace and fix the underlying Maven configuration problem (usually settings.xml or repository URL)
  2. Validate ~/.m2/settings.xml and any project settings with 'mvn help:effective-settings'
  3. Check network/proxy access to the configured remote repositories
  4. Ensure the local Maven repository (~/.m2/repository) is writable

Example fix

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

Strategy: try-catch

Validate before calling

Process p = new ProcessBuilder("mvn", "help:effective-settings").start();
if (p.waitFor() != 0) throw new IllegalStateException("Invalid Maven settings — fix ~/.m2/settings.xml first");

Try / catch

try {
    builder.postBuild();
} catch (IllegalStateException e) {
    if (e.getMessage().startsWith("Failed to initialize Quarkus bootstrap Maven resolver")) {
        // inspect e.getCause() (BootstrapMavenException) for settings/repo problem
    }
}

Prevention

When it happens

Trigger: postBuild() invoked when the underlying Maven repository system cannot be created or configured — typically failures reading settings.xml/pom model, bad repository definitions, or resolver wiring errors.

Common situations: Broken ~/.m2/settings.xml (invalid XML, bad mirror URLs); unreachable or misconfigured remote repositories; missing local repository directory permissions; running JBang packaging in an environment without proper Maven configuration.

Related errors


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