quarkusio/quarkus · error · MojoExecutionException

Failed to resolve application model <appArtifact> dependenci

Error message

Failed to resolve application model <appArtifact> dependencies

What it means

DependencySbomMojo.resolveApplicationModel resolves the app model via BootstrapAppModelResolver before generating the SBOM. Any Exception from resolution (or surrounding logic) is wrapped in a MojoExecutionException 'Failed to resolve application model <appArtifact> dependencies' with the root cause chained.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/DependencySbomMojo.java:153

        try {
            modelResolver = new BootstrapAppModelResolver(getResolver())
                    .setRuntimeModelOnly(runtimeOnly);
            if (mode != null) {
                if (mode.equalsIgnoreCase("test")) {
                    modelResolver.setTest(true);
                } else if (mode.equalsIgnoreCase("dev") || mode.equalsIgnoreCase("development")) {
                    modelResolver.setDevMode(true);
                } else if (mode.equalsIgnoreCase("prod") || mode.isEmpty()) {
                    // ignore, that's the default
                } else {
                    throw new MojoExecutionException(
                            "Parameter 'mode' was set to '" + mode + "' while expected one of 'dev', 'test' or 'prod'");
                }
            }
            modelResolver.setLegacyModelResolver(BootstrapAppModelResolver.isLegacyModelResolver(project.getProperties()));
            return modelResolver.resolveModel(appArtifact);
        } catch (Exception e) {
            throw new MojoExecutionException("Failed to resolve application model " + appArtifact + " dependencies", e);
        }
    }

    private String getSbomFilename() {
        var a = project.getArtifact();
        var sb = new StringBuilder().append(a.getArtifactId()).append("-").append(a.getVersion()).append("-");
        if (!"prod".equalsIgnoreCase(mode)) {
            sb.append(mode).append("-");
        }
        return sb.append("dependency-cyclonedx").append(".").append(format).toString();
    }

    private File getSbomFile() {
        var f = outputFile;
        if (f == null) {
            f = new File(project.getBuild().getDirectory(), getSbomFilename());
        }
        if (getLog().isDebugEnabled()) {

View on GitHub (pinned to e1c734241f)

Solutions

  1. Re-run with -e/-X to inspect the chained cause
  2. Ensure dependencies resolve first with mvn validate or mvn dependency:go-offline
  3. Fix settings.xml repository credentials/mirrors for private artifacts
  4. Clean corrupt ~/.m2/repository entries for the failing artifacts
Defensive patterns

Strategy: retry

Validate before calling

// Pre-verify dependency resolution before generating the SBOM
mvn -q validate dependency:go-offline   # a failing exit indicates artifacts that will break resolveModel

Try / catch

try {
    mvn quarkus:dependency-sbom;
} catch (MojoExecutionException e) {
    if (e.getMessage().startsWith("Failed to resolve application model")) {
        // read e.getCause() for the exact unresolvable artifact or repo problem,
        // fix settings/dependencies, then retry
    }
}

Prevention

When it happens

Trigger: Running quarkus:dependency-sbom when modelResolver.resolveModel(appArtifact) throws — unresolvable artifacts, repository/network issues, broken workspace metadata, or invalid project dependencies.

Common situations: Offline CI without a populated ~/.m2 cache; missing private repository credentials; corrupt local repo entries; version-range dependencies that cannot be resolved; multi-module workspace misconfiguration.

Related errors


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