{"record":{"id":"693a7c705a16afbd","repo":"OpenAPITools/openapi-generator","slug":"invalid-mergemode-value-mergemode-valid","errorCode":null,"errorMessage":"Invalid mergeMode value '\" + mergeMode + \"'. Valid values are: REF, DEEP","messagePattern":"Invalid mergeMode value '\" \\+ mergeMode \\+ \"'\\. Valid values are: REF, DEEP","errorType":"exception","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/ValidateMojo.java","lineNumber":290,"sourceCode":"  private boolean shouldWeSkip() {\n    if (Boolean.TRUE.equals(skip) || Boolean.TRUE.equals(skipValidateSpec)) {\n      getLog().info(\"Validation is skipped.\");\n      return true;\n    }\n    return false;\n  }\n\n  private Optional<String> mergeInDirectory() throws MojoExecutionException {\n    // Explicit file list takes precedence\n    if (inputSpecFiles != null && !inputSpecFiles.isEmpty()) {\n      if (mergedFileOutputDir == null) {\n        throw new MojoExecutionException(\"mergedFileOutputDir must be set when inputSpecFiles is used\");\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\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      String mergedSpec = builder.buildMergedSpec();","sourceCodeStart":272,"sourceCodeEnd":308,"githubUrl":"https://github.com/OpenAPITools/openapi-generator/blob/fcec517be3cf5b7964296bcba25fbc97541484e7/modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/ValidateMojo.java#L272-L308","documentation":"Thrown in ValidateMojo.mergeInDirectory when inputSpecFiles is used and MergedSpecBuilder.MergeMode.valueOf(mergeMode.toUpperCase(Locale.ROOT)) throws IllegalArgumentException — the <mergeMode> value is neither REF nor DEEP (case-insensitive, whitespace not trimmed). The validate goal mirrors the generate goal's file-list branch, so the same value rules apply.","triggerScenarios":"Validate goal configured with <inputSpecFiles> and <mergeMode>ALL</mergeMode>, <mergeMode>ref,deep</mergeMode>, or a whitespace-padded value. Null mergeMode produces NullPointerException rather than this message.","commonSituations":"POMs where generate was configured correctly but validate got a hand-written copy with a typo; vocabulary borrowed from other merge tools (swagger-maven-plugin, speccy); XML formatters injecting indentation whitespace into the value.","solutions":["Set <mergeMode>REF</mergeMode> or <mergeMode>DEEP</mergeMode>; lowercase works because the code uppercases the value.","Remove leading/trailing whitespace or line breaks from the element text.","Centralize mergeMode in plugin-level configuration so validate and generate cannot drift apart."],"exampleFix":"<!-- before -->\n<mergeMode>combine</mergeMode>\n\n<!-- after -->\n<mergeMode>REF</mergeMode>","handlingStrategy":"validation","validationCode":"MODE=$(mvn -q help:evaluate -Dexpression=mergeMode -DforceStdout 2>/dev/null)\nif [ -n \"$MODE\" ] && ! echo \"$MODE\" | tr -d '[:space:]' | tr '[:lower:]' '[:upper:]' | grep -qx '\\(REF\\|DEEP\\)'; then\n  echo \"invalid mergeMode: '$MODE'\"; exit 1\nfi","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Allow only REF/DEEP values in review for the validate goal too — it duplicates the generate goal's parsing.","Keep the element on one line; whitespace inside the value is not trimmed.","Prefer plugin-level configuration over per-execution copies to avoid divergence."],"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"}