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
- Use a complete, standard Quarkus deployment classpath (correct quarkus-bom versions) and retry the augmentation.
- Check that packaging build steps are not disabled/excluded via build system properties or custom processors.
- Clean rebuild (mvn clean package) to remove stale incremental state.
- 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
- Keep the standard quarkus-bom-managed deployment dependencies
- Do not filter out default build steps in embedded augmentation
- Clean-rebuild when incremental state is suspect
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
- Failed to prepare injector constructor ${injectCtor} of byte
- Failed to injector constructor ${injectCtor} of bytecode rec
- Unknown launch mode
- Can only create a production application when using NORMAL l
- Unable to locate effective artifact
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/14a4c12a644521a9.
Report an issue: GitHub.