quarkusio/quarkus · error · IllegalStateException

No artifact results were produced

Error message

No artifact results were produced

What it means

After a production augmentation, AugmentActionImpl expects at least one ArtifactResultBuildItem (jar, fast-jar, mutable-jar, native image, etc.) produced by the build. If the BuildResult contains none, it throws this IllegalStateException because no final artifact metadata can be written and no AugmentResult can describe an output.

Source

Thrown at core/deployment/src/main/java/io/quarkus/runner/bootstrap/AugmentActionImpl.java:200

        if (launchMode != LaunchMode.NORMAL) {
            throw new IllegalStateException("Can only create a production application when using NORMAL launch mode");
        }
        try (QuarkusClassLoader classLoader = curatedApplication.createDeploymentClassLoader()) {
            BuildResult result = runAugment(true, Collections.emptySet(), null, classLoader, ArtifactResultBuildItem.class,
                    DeploymentResultBuildItem.class, SbomBuildItem.class);

            writeDebugSourceFile(result);

            JarBuildItem jarBuildItem = result.consumeOptional(JarBuildItem.class);
            NativeImageBuildItem nativeImageBuildItem = result.consumeOptional(NativeImageBuildItem.class);
            List<ArtifactResultBuildItem> artifactResultBuildItems = result.consumeMulti(ArtifactResultBuildItem.class);
            BuildSystemTargetBuildItem buildSystemTargetBuildItem = result.consume(BuildSystemTargetBuildItem.class);
            Map<Path, List<SbomResult>> sboms = getSboms(result.consumeMulti(SbomBuildItem.class));

            // this depends on the fact that the order in which we can obtain MultiBuildItems is the same as they are produced
            // we want to write result of the final artifact created
            if (artifactResultBuildItems.isEmpty()) {
                throw new IllegalStateException("No artifact results were produced");
            }
            writeArtifactResultMetadataFile(buildSystemTargetBuildItem, artifactResultBuildItems);

            return new AugmentResult(artifactResultBuildItems.stream()
                    .map(a -> new ArtifactResult(a.getPath(), a.getType(), a.getMetadata()))
                    .collect(Collectors.toList()),
                    jarBuildItem != null ? jarBuildItem.toJarResult(sboms.getOrDefault(jarBuildItem.getPath(), List.of()))
                            : null,
                    nativeImageBuildItem != null ? nativeImageBuildItem.getPath() : null,
                    nativeImageBuildItem != null ? nativeImageBuildItem.getGraalVMInfo().toMap() : Map.of());
        }
    }

    private Map<Path, List<SbomResult>> getSboms(List<SbomBuildItem> sbomBuildItems) {
        if (sbomBuildItems.isEmpty()) {
            return Map.of();
        }
        final Map<Path, List<SbomResult>> result = new HashMap<>();

View on GitHub (pinned to e1c734241f)

Solutions

  1. Use a complete, standard Quarkus deployment classpath (correct quarkus-bom versions) and retry the augmentation.
  2. Check that packaging build steps are not disabled/excluded via build system properties or custom processors.
  3. Clean rebuild (mvn clean package) to remove stale incremental state.
  4. If embedding, ensure runAugment is invoked with the full default build-step set, not a filtered one; file an issue with the augmentation dump if it persists.

Example fix

// before
(result filtered: only custom BuildSteps executed, no ArtifactResultBuildItem producer)
// after
run full augmentation with default steps so jar/native ArtifactResultBuildItems are produced
Defensive patterns

Strategy: try-catch

Validate before calling

// after augmentation, before consuming:
if (result.getArtifactResultBuildItems() == null || result.getArtifactResultBuildItems().isEmpty()) {
    throw new IllegalStateException("Augmentation produced no artifacts; check build step configuration");
}

Try / catch

try { AugmentResult r = action.createProductionApplication(); } catch (IllegalStateException e) { if (e.getMessage().equals("No artifact results were produced")) { /* verify full deployment classpath and build-step enablement, then clean rebuild */ } else throw e; }

Prevention

When it happens

Trigger: Running createProductionApplication with a deployment classpath where no artifact-producing build step ran — e.g. a custom/damaged dependency set missing quarkus-core deployment pieces, filtered build steps, or extensions that consumed/redirected artifact production.

Common situations: Custom embedding that strips core deployment build steps; broken Quarkus installation or mismatched BOM versions where the packaging build steps are absent; misuse of build-step exclusion/enablement flags during augmentation; corrupted build caches.

Related errors


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