{"record":{"id":"14a4c12a644521a9","repo":"quarkusio/quarkus","slug":"no-artifact-results-were-produced","errorCode":null,"errorMessage":"No artifact results were produced","messagePattern":"No artifact results were produced","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"core/deployment/src/main/java/io/quarkus/runner/bootstrap/AugmentActionImpl.java","lineNumber":200,"sourceCode":"        if (launchMode != LaunchMode.NORMAL) {\n            throw new IllegalStateException(\"Can only create a production application when using NORMAL launch mode\");\n        }\n        try (QuarkusClassLoader classLoader = curatedApplication.createDeploymentClassLoader()) {\n            BuildResult result = runAugment(true, Collections.emptySet(), null, classLoader, ArtifactResultBuildItem.class,\n                    DeploymentResultBuildItem.class, SbomBuildItem.class);\n\n            writeDebugSourceFile(result);\n\n            JarBuildItem jarBuildItem = result.consumeOptional(JarBuildItem.class);\n            NativeImageBuildItem nativeImageBuildItem = result.consumeOptional(NativeImageBuildItem.class);\n            List<ArtifactResultBuildItem> artifactResultBuildItems = result.consumeMulti(ArtifactResultBuildItem.class);\n            BuildSystemTargetBuildItem buildSystemTargetBuildItem = result.consume(BuildSystemTargetBuildItem.class);\n            Map<Path, List<SbomResult>> sboms = getSboms(result.consumeMulti(SbomBuildItem.class));\n\n            // this depends on the fact that the order in which we can obtain MultiBuildItems is the same as they are produced\n            // we want to write result of the final artifact created\n            if (artifactResultBuildItems.isEmpty()) {\n                throw new IllegalStateException(\"No artifact results were produced\");\n            }\n            writeArtifactResultMetadataFile(buildSystemTargetBuildItem, artifactResultBuildItems);\n\n            return new AugmentResult(artifactResultBuildItems.stream()\n                    .map(a -> new ArtifactResult(a.getPath(), a.getType(), a.getMetadata()))\n                    .collect(Collectors.toList()),\n                    jarBuildItem != null ? jarBuildItem.toJarResult(sboms.getOrDefault(jarBuildItem.getPath(), List.of()))\n                            : null,\n                    nativeImageBuildItem != null ? nativeImageBuildItem.getPath() : null,\n                    nativeImageBuildItem != null ? nativeImageBuildItem.getGraalVMInfo().toMap() : Map.of());\n        }\n    }\n\n    private Map<Path, List<SbomResult>> getSboms(List<SbomBuildItem> sbomBuildItems) {\n        if (sbomBuildItems.isEmpty()) {\n            return Map.of();\n        }\n        final Map<Path, List<SbomResult>> result = new HashMap<>();","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/core/deployment/src/main/java/io/quarkus/runner/bootstrap/AugmentActionImpl.java#L182-L218","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\n(result filtered: only custom BuildSteps executed, no ArtifactResultBuildItem producer)\n// after\nrun full augmentation with default steps so jar/native ArtifactResultBuildItems are produced","handlingStrategy":"try-catch","validationCode":"// after augmentation, before consuming:\nif (result.getArtifactResultBuildItems() == null || result.getArtifactResultBuildItems().isEmpty()) {\n    throw new IllegalStateException(\"Augmentation produced no artifacts; check build step configuration\");\n}","typeGuard":null,"tryCatchPattern":"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; }","preventionTips":["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"],"tags":["augmentation","artifact","build-result"],"backgroundTag":"no-artifact-produced","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}