apache/maven · warning

Invalid value specified for property {}: '{}'. Supported val

Error message

Invalid value specified for property {}: '{}'. Supported values are (case insensitive): {}

What it means

DefaultPluginValidationManager parses the 'maven.plugin.validation' configuration property (Constants.MAVEN_PLUGIN_VALIDATION) into a ValidationReportLevel enum by valueOf(level.toUpperCase()). Any value outside {NONE, INLINE, SUMMARY, BRIEF, VERBOSE} (case-insensitive) throws IllegalArgumentException internally, which is caught to emit this warning naming the property, your bad value, and the supported set; the default level (INLINE) is then used.

Source

Thrown at impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java:128

                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .collect(Collectors.toList());
    }

    private ValidationReportLevel validationReportLevel(RepositorySystemSession session) {
        return (ValidationReportLevel) session.getData()
                .computeIfAbsent(ValidationReportLevel.class, () -> parseValidationReportLevel(session));
    }

    private ValidationReportLevel parseValidationReportLevel(RepositorySystemSession session) {
        String level = ConfigUtils.getString(session, null, Constants.MAVEN_PLUGIN_VALIDATION);
        if (level == null || level.isEmpty()) {
            return DEFAULT_VALIDATION_LEVEL;
        }
        try {
            return ValidationReportLevel.valueOf(level.toUpperCase(Locale.ENGLISH));
        } catch (IllegalArgumentException e) {
            logger.warn(
                    "Invalid value specified for property {}: '{}'. Supported values are (case insensitive): {}",
                    Constants.MAVEN_PLUGIN_VALIDATION,
                    level,
                    Arrays.toString(ValidationReportLevel.values()));
            return DEFAULT_VALIDATION_LEVEL;
        }
    }

    private String pluginKey(String groupId, String artifactId, String version) {
        return groupId + ":" + artifactId + ":" + version;
    }

    private String pluginKey(MojoDescriptor mojoDescriptor) {
        PluginDescriptor pd = mojoDescriptor.getPluginDescriptor();
        return pluginKey(pd.getGroupId(), pd.getArtifactId(), pd.getVersion());
    }

    private String pluginKey(Artifact pluginArtifact) {

View on GitHub (pinned to e4093d4e12)

Solutions

  1. Use one of the supported values (case-insensitive): NONE, INLINE, SUMMARY, BRIEF, VERBOSE — e.g. -Dmaven.plugin.validation=NONE.
  2. Replace the removed 'quite' with 'BRIEF' when migrating from Maven 3.8 configs.
  3. Grep CI configs, .mvn/maven.config and settings.xml for 'maven.plugin.validation' and validate the value.

Example fix

# before
mvn -Dmaven.plugin.validation=quite package

# after
mvn -Dmaven.plugin.validation=BRIEF package
Defensive patterns

Strategy: validation

Validate before calling

# guard: validate the property before the build
VAL="${MAVEN_PLUGIN_VALIDATION:-}"
case "${VAL^^}" in
  ""|NONE|INLINE|SUMMARY|BRIEF|VERBOSE) ;;
  *) echo "invalid maven.plugin.validation=$VAL"; exit 2;;
esac

Prevention

When it happens

Trigger: Setting -Dmaven.plugin.validation=<typo> or a Maven-3-only value — e.g. 'nonee', 'quite' (a known pre-3.9 spelling no longer accepted), 'brief-only', or a fully custom string in CI env vars, .mvn/maven.config or settings.xml.

Common situations: Copying -Dmaven.plugin.validation=quite from old docs (it was valid in Maven 3.8 and earlier, replaced by BRIEF); typos in CI pipeline variables; silently falling back to INLINE so an operator's intent to mute (-Dmaven.plugin.validation=none) is ignored and warnings still appear.

Related errors


AI-assisted analysis of apache/maven@e4093d4e12 (2026-08-21). Data as JSON: /api/errors/8b8e5e80b2869929. Report an issue: GitHub.