apache/maven · warning

* {}

Error message

   * {}

What it means

A single entry under 'Declared at location(s):' in the VERBOSE plugin validation report: the physical source location (e.g. /path/to/pom.xml, line 42) of one declaration of the plugin that has validation issues. One line is printed per declaration, so the same plugin can list multiple locations across the reactor.

Source

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

            logger.warn("");
            logger.warn("Plugin {} validation issues were detected in following plugin(s)", issueLocalitiesToReport);
            logger.warn("");

            // Sorting the plugins
            List<Map.Entry<String, PluginValidationIssues>> sortedEntries = new ArrayList<>(issuesMap.entrySet());
            sortedEntries.sort(Map.Entry.comparingByKey(String.CASE_INSENSITIVE_ORDER));

            for (Map.Entry<String, PluginValidationIssues> entry : sortedEntries) {
                PluginValidationIssues issues = entry.getValue();
                if (!hasAnythingToReport(issues, issueLocalitiesToReport)) {
                    continue;
                }
                logger.warn(" * {}", entry.getKey());
                if (validationReportLevel == ValidationReportLevel.VERBOSE) {
                    if (!issues.pluginDeclarations.isEmpty()) {
                        logger.warn("  Declared at location(s):");
                        for (String pluginDeclaration : issues.pluginDeclarations) {
                            logger.warn("   * {}", pluginDeclaration);
                        }
                    }
                    if (!issues.pluginIssues.isEmpty()) {
                        for (IssueLocality issueLocality : issueLocalitiesToReport) {
                            Set<String> pluginIssues = issues.pluginIssues.get(issueLocality);
                            if (pluginIssues != null && !pluginIssues.isEmpty()) {
                                logger.warn("  Plugin {} issue(s):", issueLocality);
                                for (String pluginIssue : pluginIssues) {
                                    logger.warn("   * {}", pluginIssue);
                                }
                            }
                        }
                    }
                    if (!issues.mojoIssues.isEmpty()) {
                        for (IssueLocality issueLocality : issueLocalitiesToReport) {
                            Map<String, LinkedHashSet<String>> mojoIssues = issues.mojoIssues.get(issueLocality);
                            if (mojoIssues != null && !mojoIssues.isEmpty()) {
                                logger.warn("  Mojo {} issue(s):", issueLocality);

View on GitHub (pinned to e4093d4e12)

Solutions

  1. Edit each listed location and align the plugin declaration (usually pin one version in pluginManagement)
  2. Remove redundant declarations so only the parent-managed one remains
  3. Re-run the build with the same verbose setting to confirm the plugin no longer appears in the report
Defensive patterns

Strategy: validation

Validate before calling

# verify how many places declare a plugin (should converge to one managed entry)
grep -rn --include=pom.xml '<artifactId>THE-PLUGIN</artifactId>' .

Prevention

When it happens

Trigger: -Dmaven.plugin.validation=verbose build where the flagged plugin was invoked from one or more POM declarations; each declaration's InputLocation string is printed as ' * <location>'.

Common situations: Same plugin declared with different versions in different modules; plugin re-declared in profile blocks; teams hunting down which of dozens of POMs pulls in the flagged version.

Related errors


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