OpenAPITools/openapi-generator · error · MojoExecutionException
Invalid mergeConflictStrategy value '" + mergeConflictStrate
Error message
Invalid mergeConflictStrategy value '" + mergeConflictStrategy + "'. Valid values are: WARN, FAIL
What it means
Thrown in ValidateMojo.mergeInDirectory's file-list branch when mergeMode resolved to DEEP and MergeConflictStrategy.valueOf(mergeConflictStrategy.toUpperCase(Locale.ROOT)) throws IllegalArgumentException — the <mergeConflictStrategy> is neither WARN nor FAIL (case-insensitive, untrimmed). Consistent with the generate goal, the strategy is only validated when deep merging is active.
Source
Thrown at modules/openapi-generator-maven-plugin/src/main/java/org/openapitools/codegen/plugin/ValidateMojo.java:303
}
MergedSpecBuilder.MergeMode resolvedMergeMode;
try {
resolvedMergeMode = MergedSpecBuilder.MergeMode.valueOf(mergeMode.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new MojoExecutionException("Invalid mergeMode value '" + mergeMode
+ "'. Valid values are: REF, DEEP");
}
MergedSpecBuilder builder = new MergedSpecBuilder(inputSpecFiles, mergedFileOutputDir.getAbsolutePath(),
mergedFileName, mergedFileInfoName, mergedFileInfoDescription, mergedFileInfoVersion, auth)
.withMergeMode(resolvedMergeMode);
if (resolvedMergeMode == MergedSpecBuilder.MergeMode.DEEP) {
try {
builder.withConflictStrategy(
MergedSpecBuilder.MergeConflictStrategy.valueOf(mergeConflictStrategy.toUpperCase(Locale.ROOT)));
} catch (IllegalArgumentException e) {
throw new MojoExecutionException("Invalid mergeConflictStrategy value '" + mergeConflictStrategy
+ "'. Valid values are: WARN, FAIL");
}
}
String mergedSpec = builder.buildMergedSpec();
LOGGER.info("Merged input spec from explicit file list: {}", mergedSpec);
return Optional.of(mergedSpec);
}
// Directory scan mode
Optional<String> mergedSpec = Optional.empty();
if (StringUtils.isNotBlank(inputSpecRootDirectory)) {
inputSpecRootDirectory = replaceBackslashesToSlashes(inputSpecRootDirectory);
MergedSpecBuilder.MergeMode resolvedMergeMode;
try {
resolvedMergeMode = MergedSpecBuilder.MergeMode.valueOf(mergeMode.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {View on GitHub (pinned to fcec517be3)
Solutions
- Set <mergeConflictStrategy>WARN</mergeConflictStrategy> or <mergeConflictStrategy>FAIL</mergeConflictStrategy>.
- Trim whitespace from the value; the lookup uppercases but does not trim.
- Share the merge settings with the generate goal via plugin-level <configuration> to keep both consistent.
Example fix
<!-- before --> <mergeMode>DEEP</mergeMode> <mergeConflictStrategy>THROW</mergeConflictStrategy> <!-- after --> <mergeMode>DEEP</mergeMode> <mergeConflictStrategy>FAIL</mergeConflictStrategy>
Defensive patterns
Strategy: validation
Validate before calling
CS=$(mvn -q help:evaluate -Dexpression=mergeConflictStrategy -DforceStdout 2>/dev/null)
echo "$CS" | tr -d '[:space:]' | tr '[:lower:]' '[:upper:]' | grep -qx '\(WARN\|FAIL\)' || {
echo "mergeConflictStrategy must be WARN or FAIL (got '$CS')"; exit 1;
} Prevention
- Validate mergeConflictStrategy even while in REF mode — the plugin only checks it under DEEP, so a typo stays hidden until you switch.
- Use WARN during exploration and FAIL once merged specs are considered authoritative.
- Document the two valid values next to the property in your POM comments.
When it happens
Trigger: Validate goal with <inputSpecFiles>, <mergeMode>DEEP</mergeMode>, and an invalid conflict strategy such as "THROW", "ignore", or " WARN". The same bad value under REF mode never triggers this error.
Common situations: Enabling deep merge for validation of merged multi-file specs and guessing strategy names; values supplied via -DmergeConflictStrategy=... in pipelines differing from the POM default; whitespace introduced during XML editing.
Related errors
- Invalid mergeMode value '${mergeMode}'. Valid values are: RE
- Invalid mergeConflictStrategy value '${mergeConflictStrategy
- Invalid mergeMode value '" + mergeMode + "'. Valid values ar
- mergedFileOutputDir must be set when inputSpecFiles is used
- mergedFileOutputDir must be set when inputSpecFiles is used
AI-assisted analysis of OpenAPITools/openapi-generator@fcec517be3 (2026-08-22).
Data as JSON: /api/errors/798ee73abbdb78dc.
Report an issue: GitHub.