{"record":{"id":"a579447c13a4b0fd","repo":"quarkusio/quarkus","slug":"parameter-mode-was-set-to-mode-while-expecte-a57944","errorCode":null,"errorMessage":"Parameter 'mode' was set to '<mode>' while expected one of 'dev', 'test' or 'prod'","messagePattern":"Parameter 'mode' was set to '<mode>' while expected one of 'dev', 'test' or 'prod'","errorType":"exception","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"devtools/maven/src/main/java/io/quarkus/maven/DependencyTreeMojo.java","lineNumber":152,"sourceCode":"\n    private void logTree(final Consumer<String> log) throws MojoExecutionException {\n        log.accept(\"Quarkus application \" + mode.toUpperCase() + \" mode build dependency tree:\");\n\n        final ArtifactCoords appArtifact = ArtifactCoords.pom(project.getGroupId(), project.getArtifactId(),\n                project.getVersion());\n        final BootstrapAppModelResolver modelResolver;\n        try {\n            modelResolver = new BootstrapAppModelResolver(resolver())\n                    .setRuntimeModelOnly(runtimeOnly);\n            if (mode != null) {\n                if (mode.equalsIgnoreCase(\"test\")) {\n                    modelResolver.setTest(true);\n                } else if (mode.equalsIgnoreCase(\"dev\") || mode.equalsIgnoreCase(\"development\")) {\n                    modelResolver.setDevMode(true);\n                } else if (mode.equalsIgnoreCase(\"prod\") || mode.isEmpty()) {\n                    // ignore, that's the default\n                } else {\n                    throw new MojoExecutionException(\n                            \"Parameter 'mode' was set to '\" + mode + \"' while expected one of 'dev', 'test' or 'prod'\");\n                }\n            }\n            modelResolver.setLegacyModelResolver(BootstrapAppModelResolver.isLegacyModelResolver(project.getProperties()));\n            modelResolver.setDepLogConfig(DependencyLoggingConfig.builder()\n                    .setMessageConsumer(log)\n                    .setVerbose(verbose)\n                    .setGraph(graph)\n                    .build());\n            modelResolver.resolveModel(appArtifact);\n        } catch (Exception e) {\n            throw new MojoExecutionException(\"Failed to resolve application model \" + appArtifact + \" dependencies\", e);\n        }\n    }\n\n    protected MavenArtifactResolver resolver() {\n        return resolver == null\n                ? resolver = workspaceProvider.createArtifactResolver(BootstrapMavenContext.config()","sourceCodeStart":134,"sourceCodeEnd":170,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/maven/src/main/java/io/quarkus/maven/DependencyTreeMojo.java#L134-L170","documentation":"DependencyTreeMojo accepts a `mode` parameter that selects how the application model is resolved (test, dev, or prod). Only 'dev'/'development', 'test', 'prod', or empty are accepted; anything else throws MojoExecutionException. This validates user configuration before resolving the model.","triggerScenarios":"Running `mvn quarkus:dependency-tree -Dmode=<value>` with a value other than dev/development/test/prod/empty, e.g. a typo like 'prodction', 'DEV-MODE', or 'qa'.","commonSituations":"Typos in the -Dmode property; copying a mode value from another tool (e.g. 'integration' or 'staging' profiles); CI scripts parameterized with an unexpected default value; shell variable expanding to empty-quoted or whitespace text.","solutions":["Set -Dmode to exactly one of dev, test, or prod.","Remove the -Dmode property entirely to use the default (prod).","Fix typos such as 'prodction' or 'Development ' (trailing spaces) in the Maven command or pom configuration.","In CI, verify the variable being interpolated into -Dmode contains only the allowed values."],"exampleFix":"// before\nmvn quarkus:dependency-tree -Dmode=production\n// after\nmvn quarkus:dependency-tree -Dmode=prod","handlingStrategy":"validation","validationCode":"// validate the mode value before invoking Maven\nString mode = System.getProperty(\"mode\", \"\");\nif (!(mode.isEmpty() || Set.of(\"dev\",\"development\",\"test\",\"prod\").contains(mode.toLowerCase()))) {\n    throw new IllegalArgumentException(\"mode must be dev, test or prod, got: \" + mode);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only pass dev, test, or prod to -Dmode.","Omit -Dmode entirely when prod (default) is desired.","Keep mode values in a controlled variable/parameter list in CI scripts."],"tags":["maven","configuration","validation","quarkus"],"backgroundTag":"invalid-enum-value","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}