{"record":{"id":"725dec2e710210ca","repo":"apache/maven","slug":"error-725dec","errorCode":null,"errorMessage":" * {}","messagePattern":" \\* \\{\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java","lineNumber":232,"sourceCode":"                        || validationReportLevel == ValidationReportLevel.VERBOSE\n                ? EnumSet.allOf(IssueLocality.class)\n                : EnumSet.of(IssueLocality.EXTERNAL);\n\n        if (hasAnythingToReport(issuesMap, issueLocalitiesToReport)) {\n            logger.warn(\"\");\n            logger.warn(\"Plugin {} validation issues were detected in following plugin(s)\", issueLocalitiesToReport);\n            logger.warn(\"\");\n\n            // Sorting the plugins\n            List<Map.Entry<String, PluginValidationIssues>> sortedEntries = new ArrayList<>(issuesMap.entrySet());\n            sortedEntries.sort(Map.Entry.comparingByKey(String.CASE_INSENSITIVE_ORDER));\n\n            for (Map.Entry<String, PluginValidationIssues> entry : sortedEntries) {\n                PluginValidationIssues issues = entry.getValue();\n                if (!hasAnythingToReport(issues, issueLocalitiesToReport)) {\n                    continue;\n                }\n                logger.warn(\" * {}\", entry.getKey());\n                if (validationReportLevel == ValidationReportLevel.VERBOSE) {\n                    if (!issues.pluginDeclarations.isEmpty()) {\n                        logger.warn(\"  Declared at location(s):\");\n                        for (String pluginDeclaration : issues.pluginDeclarations) {\n                            logger.warn(\"   * {}\", pluginDeclaration);\n                        }\n                    }\n                    if (!issues.pluginIssues.isEmpty()) {\n                        for (IssueLocality issueLocality : issueLocalitiesToReport) {\n                            Set<String> pluginIssues = issues.pluginIssues.get(issueLocality);\n                            if (pluginIssues != null && !pluginIssues.isEmpty()) {\n                                logger.warn(\"  Plugin {} issue(s):\", issueLocality);\n                                for (String pluginIssue : pluginIssues) {\n                                    logger.warn(\"   * {}\", pluginIssue);\n                                }\n                            }\n                        }\n                    }","sourceCodeStart":214,"sourceCodeEnd":250,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java#L214-L250","documentation":"Not an exception but the per-plugin heading line of Maven's end-of-session plugin validation report. DefaultPluginValidationManager is an EventSpy that collects validation issues during the build; at SessionEnded, when 'maven.plugin.validation' is set to summary, brief or verbose, it prints this line naming each affected plugin as ' * groupId:artifactId:version' (sorted case-insensitively). The issues underneath come from checks like MavenPluginValidator (malformed plugin descriptors) and PluginDependencyAnalyzer (wrong dependency scopes, leaked classloader dependencies).","triggerScenarios":"Run a build with -Dmaven.plugin.validation=summary|brief|verbose (or that value in settings.xml) in which at least one executed or resolved plugin raised a validation issue, e.g. a mojo using a deprecated API or a plugin depending on maven-core in compile scope. At SessionEnded, hasAnythingToReport() is true and one ' * GAV' line is printed per affected plugin.","commonSituations":"Maven 3.9+/4.x upgrades where the validation reporting shipped with MNG-7238-style checks suddenly surfaces in CI logs; multi-module builds inheriting stale plugin versions from a corporate parent; third-party plugins that lag behind current Maven API rules.","solutions":["Note the exact GAV on this line, read the indented issue lines below it, and act on them - in most cases upgrading the named plugin to its latest release clears the issue","Pin that upgrade centrally in the top-level parent's <pluginManagement> so all modules inherit the fixed version","If the plugin is maintained in-house, fix the reported problem (dependency scopes, removed-internal-API usage, descriptor fields) and release","Suppress a known-acceptable plugin with -Dmaven.plugin.validation.excludes=groupId:artifactId:version, or mute the whole report with -Dmaven.plugin.validation=none (avoid in CI)"],"exampleFix":"// before (parent pom.xml, stale plugin inherited everywhere)\n<build>\n  <plugins>\n    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version></plugin>\n  </plugins>\n</build>\n// after\n<build>\n  <pluginManagement>\n    <plugins>\n      <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.13.0</version></plugin>\n    </plugins>\n  </pluginManagement>\n</build>","handlingStrategy":"validation","validationCode":"# preflight: list plugins with available updates before the build\nmvn -q versions:display-plugin-updates -DallowSnapshots=false","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin every plugin version in the top-level parent's <pluginManagement> so no module resolves stale plugins","Run versions:display-plugin-updates periodically in CI and upgrade flagged plugins","Keep -Dmaven.plugin.validation=summary (or verbose) enabled in CI so regressions surface at build end"],"tags":["maven","plugin-validation","build-report","event-spy"],"backgroundTag":"plugin-validation-report","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-22T04:17:13.399Z"}