{"record":{"id":"5f5e10472dc792af","repo":"quarkusio/quarkus","slug":"invalid-system-property-prop","errorCode":null,"errorMessage":"Invalid system property: ${prop}","messagePattern":"Invalid system property: (.+?)","errorType":"validation","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"devtools/maven/src/main/java/io/quarkus/maven/RunMojo.java","lineNumber":128,"sourceCode":"                            break;\n                        }\n                    } else if (cmds.size() > 2) {\n                        tooMany.set(cmds.keySet().stream().collect(Collectors.joining(\" \")));\n                        return;\n                    } else {\n                        throw new RuntimeException(\"Should never reach this!\");\n                    }\n                    List<String> args = (List<String>) cmd.get(0);\n                    if (additionalSystemProperties != null) {\n                        String[] props = additionalSystemProperties.split(\",\");\n                        for (int i = props.length - 1; i >= 0; i--) {\n                            String prop = props[i];\n                            String[] parts = prop.split(\"=\");\n                            if (parts.length == 2) {\n                                // we want to set the system property write after the command\n                                args.add(1, \"-D\" + prop);\n                            } else {\n                                throw new RuntimeException(\"Invalid system property: \" + prop);\n                            }\n                        }\n                    }\n                    if (programArguments != null) {\n                        args.addAll(Arrays.asList(programArguments.split(\",\")));\n                    }\n                    if (getLog().isInfoEnabled()) {\n                        getLog().info(\"Executing \\\"\" + String.join(\" \", args) + \"\\\"\");\n                    }\n                    Path workingDirectory = (Path) cmd.get(1);\n                    var pb = ProcessBuilder.newBuilder(args.get(0))\n                            .arguments(args.subList(1, args.size()))\n                            .output().inherited()\n                            .error().inherited();\n                    if (workingDirectory != null) {\n                        pb.directory(workingDirectory);\n                    }\n                    if ((environmentVariables != null) && !environmentVariables.isEmpty()) {","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/maven/src/main/java/io/quarkus/maven/RunMojo.java#L110-L146","documentation":"RunMojo (mvn quarkus:dev) parses the comma-separated `jvmArgs`-style system property list and requires every entry to be in key=value form. When a split on '=' yields anything other than 2 parts (e.g. no '=' at all), it throws RuntimeException 'Invalid system property: <prop>'. The offending property name is interpolated into the message.","triggerScenarios":"Passing a system property without a value or with malformed syntax to quarkus:dev, e.g. -Dquarkus.args.jvmProps (or the equivalent args entry) containing 'foo' or 'foo=bar=baz' style entries — split(\"=\") on 'foo=bar=baz' yields 3 parts.","commonSituations":"Shorthand flags without values; copying -Dfoo from JVM command lines where the value was implicit; commas inside property values splitting the list; properties containing '=' in their value (e.g. base64) that produce >2 parts.","solutions":["Always supply a value: use foo= (empty value) instead of bare foo","For values containing '=', check the current Quarkus version: newer code splits with a limit; upgrade quarkus-maven-plugin, or quote/encode the value","Ensure the list is comma-separated with no stray spaces; trim entries","If you need a property set without a value, set it as -Dfoo= via the run arguments instead"],"exampleFix":"// before\n-Dquarkus.jvm.args=-Dmy.prop\n// after\n-Dquarkus.jvm.args=-Dmy.prop=\n// or for values containing '='\n-Dquarkus.jvm.args=\"-Dmy.prop=foo==bar\" (only on versions using split(\"=\",2))","handlingStrategy":"validation","validationCode":"// Validate each jvm/system property entry before invoking quarkus:dev:\nfor (String p : props.split(\",\")) {\n  if (!p.matches(\"[^=]+=.*\")) throw new IllegalArgumentException(\"Invalid system property: \" + p);\n}","typeGuard":null,"tryCatchPattern":"try { runMojo.execute(); }\ncatch (RuntimeException e) {\n  if (e.getMessage().startsWith(\"Invalid system property\")) {\n    log.error(\"Fix the jvmProps entry to key=value form: {}\", e.getMessage());\n  } else throw e;\n}","preventionTips":["Always write properties as key=value, using key= for empty values","Avoid '=' inside property values unless your Quarkus version splits with limit 2","Don't put commas inside property values (the list is comma-separated)","Upgrade quarkus-maven-plugin to get tolerant value parsing"],"tags":["maven","quarkus","cli-arguments"],"backgroundTag":"invalid-system-property","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"}