quarkusio/quarkus · error · MojoExecutionException

Failed to bootstrap application in ${mode} mode

Error message

Failed to bootstrap application in ${mode} mode

What it means

During doBootstrap, QuarkusBootstrapProvider resolves the managed application model (with forced dependencies and reloadable modules) before creating the QuarkusBootstrap. An AppModelResolverException there means the application model — including platform-managed versions — could not be resolved, and is wrapped in this MojoExecutionException naming the launch mode (e.g. DEV, TEST).

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/QuarkusBootstrapProvider.java:334

                    localProjectKeys.add(ArtifactKey.ga(p.getGroupId(), p.getArtifactId()));
                }
                reloadableModules = new HashSet<>(localProjects.size() + 1);
                for (Artifact a : mojo.mavenProject().getArtifacts()) {
                    if (localProjectKeys.contains(ArtifactKey.ga(a.getGroupId(), a.getArtifactId()))) {
                        reloadableModules
                                .add(ArtifactKey.of(a.getGroupId(), a.getArtifactId(), a.getClassifier(), a.getType()));
                    }
                }
                reloadableModules.add(appArtifact.getKey());
            }

            final List<Dependency> forcedDependencies = mojo.forcedDependencies(mode);
            final ApplicationModel appModel;
            try {
                appModel = modelResolver.resolveManagedModel(appArtifact, forcedDependencies, Set.of(),
                        managingProject(mojo), reloadableModules);
            } catch (AppModelResolverException e) {
                throw new MojoExecutionException("Failed to bootstrap application in " + mode + " mode", e);
            }
            QuarkusBootstrap.Builder builder = QuarkusBootstrap.builder()
                    .setAppArtifact(appModel.getAppArtifact())
                    .setExistingModel(appModel)
                    .setIsolateDeployment(true)
                    .setBaseClassLoader(getClass().getClassLoader())
                    .setBuildSystemProperties(getBuildSystemProperties(mojo, true))
                    .setProjectRoot(mojo.baseDir().toPath())
                    .setBaseName(mojo.finalName())
                    .setOriginalBaseName(mojo.mavenProject().getBuild().getFinalName())
                    .setTargetDirectory(mojo.buildDir().toPath())
                    .setForcedDependencies(forcedDependencies)
                    .setDependencyInfoProvider(() -> DependencyInfoProvider.builder()
                            .setMavenModelResolver(EffectiveModelResolver.of(artifactResolver(mojo, mode)))
                            .build());

            try {
                if (builderCustomizer != null) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Read the AppModelResolverException cause for the exact artifact that failed
  2. Remove version overrides on Quarkus extensions so the platform BOM manages them
  3. Refresh metadata/cache with `mvn -U` and clean ~/.m2/repository/io/quarkus if corrupted
  4. Ensure quarkus.platform.version and the plugin version are aligned
  5. For remote-dev, verify client and server use the same Quarkus version

Example fix

// before
<dependency><groupId>io.quarkus</groupId><artifactId>quarkus-rest</artifactId><version>3.0.0.Final</version></dependency>
// after
<dependency><groupId>io.quarkus</groupId><artifactId>quarkus-rest</artifactId></dependency> <!-- version from platform BOM -->
Defensive patterns

Strategy: try-catch

Validate before calling

// check that all quarkus deps are BOM-managed (no explicit versions)
// grep the pom:
//   grep -B2 '<version>' pom.xml | grep -A1 'io.quarkus' — any hit means an override

Try / catch

try {
    // mvn quarkus:dev
} catch (MojoExecutionException e) {
    if (e.getCause() instanceof AppModelResolverException) {
        log.error("App model resolution failed in DEV mode: " + e.getCause().getMessage());
        // fix the artifact named in the message, then retry
    }
}

Prevention

When it happens

Trigger: Running `mvn quarkus:dev`, `quarkus:test`, or package goals when managed dependencies cannot be resolved: missing platform BOM entries, conflicting forced dependencies, or unresolvable reloadable modules from a remote dev workspace.

Common situations: Overriding an extension version outside the platform (version mismatch); adding a dependency not managed by the imported BOM; broken local repository entries; remote-dev client with mismatched server version.

Related errors


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