{"record":{"id":"bf24a1fc5fca8370","repo":"apache/maven","slug":"plugin-issue-s","errorCode":null,"errorMessage":"  Plugin {} issue(s):","messagePattern":"  Plugin (.+?) issue\\(s\\):","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java","lineNumber":244,"sourceCode":"\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                    }\n                    if (!issues.mojoIssues.isEmpty()) {\n                        for (IssueLocality issueLocality : issueLocalitiesToReport) {\n                            Map<String, LinkedHashSet<String>> mojoIssues = issues.mojoIssues.get(issueLocality);\n                            if (mojoIssues != null && !mojoIssues.isEmpty()) {\n                                logger.warn(\"  Mojo {} issue(s):\", issueLocality);\n                                for (String mojoInfo : mojoIssues.keySet()) {\n                                    logger.warn(\"   * Mojo {}\", mojoInfo);\n                                    for (String mojoIssue : mojoIssues.get(mojoInfo)) {\n                                        logger.warn(\"     - {}\", mojoIssue);\n                                    }\n                                }\n                            }","sourceCodeStart":226,"sourceCodeEnd":262,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java#L226-L262","documentation":"VERBOSE report section header grouping plugin-level (not mojo-level) issues by IssueLocality: INTERNAL means the problem originates in the plugin artifact itself (descriptor, its own dependencies), EXTERNAL means it originates in how the plugin's dependencies interact with the build. One such header is printed for every locality that actually has issues, followed by one '   * issue' line each.","triggerScenarios":"-Dmaven.plugin.validation=verbose build where issues.pluginIssues contains a non-empty set for a locality in issueLocalitiesToReport (all localities for verbose/summary, only EXTERNAL for brief).","commonSituations":"Plugins shipping maven-core or other Maven internals with compile scope (classic EXTERNAL finding); plugins with malformed plugin.xml metadata (INTERNAL); distinguishing whether you or the plugin author must fix the finding.","solutions":["Read the issues under the INTERNAL/EXTERNAL heading: INTERNAL issues must be fixed in the plugin itself, EXTERNAL ones often by upgrading or excluding plugin dependencies","Upgrade the plugin to a release whose dependency tree no longer triggers the finding (check with mvn dependency:tree on the plugin or its release notes)","For in-house plugins, fix scopes (provided for maven-core) or descriptor fields, then release and bump"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"mvn -q dependency:resolve-plugins -Dmaven.plugin.validation=verbose","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Learn the INTERNAL vs EXTERNAL split: fix INTERNAL in the plugin, EXTERNAL usually via upgrade or dependency fixes","Track upstream plugin releases - locality findings are usually resolved by version bumps"],"tags":["maven","plugin-validation","locality","build-report"],"backgroundTag":"plugin-validation-report","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}