{"record":{"id":"e19473f824c73f9d","repo":"OpenAPITools/openapi-generator","slug":"invalid-mergeconflictstrategy-value-mergeconfli","errorCode":null,"errorMessage":"Invalid mergeConflictStrategy value '${mergeConflictStrategy}'. Valid values are: WARN, FAIL","messagePattern":"Invalid mergeConflictStrategy value '(.+?)'\\. Valid values are: WARN, FAIL","errorType":"exception","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java","lineNumber":645,"sourceCode":"            }\n            MergedSpecBuilder.MergeMode resolvedMergeMode;\n            try {\n                resolvedMergeMode = MergedSpecBuilder.MergeMode.valueOf(mergeMode.toUpperCase(Locale.ROOT));\n            } catch (IllegalArgumentException e) {\n                throw new MojoExecutionException(\"Invalid mergeMode value '\" + mergeMode\n                        + \"'. Valid values are: REF, DEEP\");\n            }\n\n            MergedSpecBuilder builder = new MergedSpecBuilder(inputSpecFiles, mergedFileOutputDir.getAbsolutePath(),\n                    mergedFileName, mergedFileInfoName, mergedFileInfoDescription, mergedFileInfoVersion, auth)\n                    .withMergeMode(resolvedMergeMode);\n\n            if (resolvedMergeMode == MergedSpecBuilder.MergeMode.DEEP) {\n                try {\n                    builder.withConflictStrategy(\n                            MergedSpecBuilder.MergeConflictStrategy.valueOf(mergeConflictStrategy.toUpperCase(Locale.ROOT)));\n                } catch (IllegalArgumentException e) {\n                    throw new MojoExecutionException(\"Invalid mergeConflictStrategy value '\" + mergeConflictStrategy\n                            + \"'. Valid values are: WARN, FAIL\");\n                }\n            }\n\n            inputSpec = builder.buildMergedSpec();\n            LOGGER.info(\"Merged input spec from explicit file list: {}\", inputSpec);\n        } else if (StringUtils.isNotBlank(inputSpecRootDirectory)) {\n            // make sure the path can be processed correct under Windows OS\n            inputSpecRootDirectory = inputSpecRootDirectory.replaceAll(\"\\\\\\\\\", \"/\");\n\n            MergedSpecBuilder.MergeMode resolvedMergeMode;\n            try {\n                resolvedMergeMode = MergedSpecBuilder.MergeMode.valueOf(mergeMode.toUpperCase(Locale.ROOT));\n            } catch (IllegalArgumentException e) {\n                throw new MojoExecutionException(\"Invalid mergeMode value '\" + mergeMode\n                        + \"'. Valid values are: REF, DEEP\");\n            }\n","sourceCodeStart":627,"sourceCodeEnd":663,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/CodeGenMojo.java#L627-L663","documentation":"Thrown by CodeGenMojo.execute when mergeMode is DEEP and MergedSpecBuilder.MergeConflictStrategy.valueOf(mergeConflictStrategy.toUpperCase(Locale.ROOT)) throws IllegalArgumentException — the configured <mergeConflictStrategy> is not WARN or FAIL (case-insensitive, not trimmed). The conflict strategy is only resolved in DEEP mode, so an invalid value passes silently in REF mode and fails here only after a valid DEEP mergeMode.","triggerScenarios":"Configuring <mergeMode>DEEP</mergeMode> together with <mergeConflictStrategy>OVERWRITE</mergeConflictStrategy>, <mergeConflictStrategy>fail_on_conflict</mergeConflictStrategy>, or a value with stray whitespace, while also using <inputSpecFiles>. With mergeMode REF the branch is skipped and the bad value is never checked.","commonSituations":"Switching from REF to DEEP merging to get conflict detection and guessing at strategy names; sharing POM snippets across teams where one side used a newer/older vocabulary; IDE autocompleting a similarly named property from a different plugin.","solutions":["Set <mergeConflictStrategy>WARN</mergeConflictStrategy> or <mergeConflictStrategy>FAIL</mergeConflictStrategy> (casing is normalized, whitespace is not).","Remember this property is only validated when <mergeMode>DEEP</mergeMode> — a bad value hides in REF mode, so fix it now to avoid a later failure.","Remove whitespace/newlines inside the element if the value already looks correct."],"exampleFix":"<!-- before -->\n<mergeMode>DEEP</mergeMode>\n<mergeConflictStrategy>OVERWRITE</mergeConflictStrategy>\n\n<!-- after -->\n<mergeMode>DEEP</mergeMode>\n<mergeConflictStrategy>FAIL</mergeConflictStrategy>","handlingStrategy":"validation","validationCode":"# pre-check mergeConflictStrategy when mergeMode=DEEP\nif [ \"$MODE\" = \"DEEP\" ]; then\n  CS=$(mvn -q help:evaluate -Dexpression=mergeConflictStrategy -DforceStdout 2>/dev/null)\n  echo \"$CS\" | tr '[:lower:]' '[:upper:]' | grep -qx '\\(WARN\\|FAIL\\)' || { echo \"invalid mergeConflictStrategy: $CS\"; exit 1; }\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only two conflict strategies exist: WARN and FAIL — pick one explicitly whenever using DEEP merge.","An invalid value is invisible under REF mode; validate it anyway so switching to DEEP later cannot break the build.","Centralize mergeConflictStrategy next to mergeMode in one configuration block."],"tags":["openapi-generator","maven","plugin-config","spec-merging","invalid-enum-value"],"backgroundTag":"invalid-config-value","analyzedSha":"fcec517be3cf5b7964296bcba25fbc97541484e7","analyzedAt":"2026-08-22T11:13:11.613Z","schemaVersion":2},"datasetVersion":"2026-08-22T14:17:55.899Z"}