{"record":{"id":"b7f0ce3048f2f71c","repo":"apache/maven","slug":"the-following-plugins-are-not-maven-4-plugins","errorCode":null,"errorMessage":"The following plugins are not Maven 4 plugins:","messagePattern":"The following plugins are not Maven 4 plugins:","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java","lineNumber":337,"sourceCode":"                                following plugin(s) that have goals not built with Maven 4 to support concurrent \\\n                                execution. While this /may/ work fine, please look for plugin updates and/or \\\n                                request plugins be made thread-safe. If reporting an issue, report it against the \\\n                                plugin in question, not against Apache Maven.\"\"\")) {\n                        logger.warn(s);\n                    }\n                    if (logger.isDebugEnabled()) {\n                        Set<MojoDescriptor> unsafeGoals = unsafeExecutions.stream()\n                                .map(MojoExecution::getMojoDescriptor)\n                                .collect(Collectors.toSet());\n                        logger.warn(\"The following goals are not Maven 4 goals:\");\n                        for (MojoDescriptor unsafeGoal : unsafeGoals) {\n                            logger.warn(\"  \" + unsafeGoal.getId());\n                        }\n                    } else {\n                        Set<Plugin> unsafePlugins = unsafeExecutions.stream()\n                                .map(MojoExecution::getPlugin)\n                                .collect(Collectors.toSet());\n                        logger.warn(\"The following plugins are not Maven 4 plugins:\");\n                        for (Plugin unsafePlugin : unsafePlugins) {\n                            logger.warn(\"  \" + unsafePlugin.getId());\n                        }\n                        logger.warn(\"\");\n                        logger.warn(\"Enable verbose output (-X) to see precisely which goals are not marked as\"\n                                + \" thread-safe.\");\n                    }\n                    logger.warn(MultilineMessageHelper.separatorLine());\n                }\n            }\n        }\n\n        void execute() {\n            try (var phase = executor.phase()) {\n                plan();\n                executePlan();\n            } catch (Exception e) {\n                session.getResult().addException(e);","sourceCodeStart":319,"sourceCodeEnd":355,"githubUrl":"https://github.com/apache/maven/blob/e4093d4e120eac99d6bdce5ba67cace2f3085c97/impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java#L319-L355","documentation":"Non-debug branch of BuildPlanExecutor.checkThreadSafety(): without -X, the concurrent executor aggregates unsafeExecutions up to Plugin level and logs 'The following plugins are not Maven 4 plugins:' with one plugin id per line. It identifies plugins containing at least one goal not built with the Maven 4 plugin API in a concurrent build.","triggerScenarios":"Concurrent Maven 4 session (threads > 1) with any v3-API mojo in the plan and debug logging disabled — the default 'mvn -T 4 ...' run under Maven 4.","commonSituations":"Standard Maven 4 parallel CI runs on existing projects; blanket warnings expected while the plugin ecosystem migrates to the v4 API.","solutions":["Upgrade each listed plugin to a Maven-4-built version when released.","Fall back to a single-threaded build (-T 1 / no -T) for reactors still depending on listed plugins.","Track plugin releases / upstream issues for v4 API support instead of reporting against Maven itself."],"exampleFix":"# before\nmvn -T 1C verify\n# -> The following plugins are not Maven 4 plugins: ...\n\n# after: sequential until plugins are v4-built\nmvn verify","handlingStrategy":"validation","validationCode":"# guard: break CI when non-v4 plugins would run concurrently\nmvn -T 1C -Dstyle.color=never install 2>&1 \\\n  | grep -q 'not Maven 4 plugins' && exit 1 || true","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Maintain an allowlist of v4-ready plugins; fall back to sequential builds for the rest.","Report v4-API requests to plugin projects, not to Maven (as the message instructs)."],"tags":["maven","maven-4","concurrent-build","thread-safety","plugin-management"],"backgroundTag":"maven-plugin-not-thread-safe","analyzedSha":"e4093d4e120eac99d6bdce5ba67cace2f3085c97","analyzedAt":"2026-08-21T22:58:24.034Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}