apache/maven · info
Enable verbose output (-X) to see precisely which goals are
Error message
Enable verbose output (-X) to see precisely which goals are not marked as thread-safe.
What it means
Closing hint of the non-debug Maven-4 concurrency report: after listing non-v4 plugins, BuildPlanExecutor logs 'Enable verbose output (-X) to see precisely which goals are not marked as thread-safe.' plus a separator line. The wording is inherited from the classic thread-safety report but here points at goal-level detail of the v4-API check.
Source
Thrown at impl/maven-core/src/main/java/org/apache/maven/lifecycle/internal/concurrent/BuildPlanExecutor.java:342
}
if (logger.isDebugEnabled()) {
Set<MojoDescriptor> unsafeGoals = unsafeExecutions.stream()
.map(MojoExecution::getMojoDescriptor)
.collect(Collectors.toSet());
logger.warn("The following goals are not Maven 4 goals:");
for (MojoDescriptor unsafeGoal : unsafeGoals) {
logger.warn(" " + unsafeGoal.getId());
}
} else {
Set<Plugin> unsafePlugins = unsafeExecutions.stream()
.map(MojoExecution::getPlugin)
.collect(Collectors.toSet());
logger.warn("The following plugins are not Maven 4 plugins:");
for (Plugin unsafePlugin : unsafePlugins) {
logger.warn(" " + unsafePlugin.getId());
}
logger.warn("");
logger.warn("Enable verbose output (-X) to see precisely which goals are not marked as"
+ " thread-safe.");
}
logger.warn(MultilineMessageHelper.separatorLine());
}
}
}
void execute() {
try (var phase = executor.phase()) {
plan();
executePlan();
} catch (Exception e) {
session.getResult().addException(e);
}
}
@Override
public void close() {View on GitHub (pinned to e4093d4e12)
Solutions
- Re-run with -X and read the 'The following goals are not Maven 4 goals:' section for exact ids.
- Upgrade the identified plugins or temporarily drop -T.
- Use help:describe -Dplugin=<g:a> -Ddetail to inspect a plugin's goals and their API level.
Example fix
# before mvn -T 4 install # 'Enable verbose output (-X) ...' # after mvn -X -T 4 install 2>&1 | grep -A15 'not Maven 4 goals'
Defensive patterns
Strategy: validation
Validate before calling
# guard: archive the goal-level v4 report for triage mvn -T 1C install 2>&1 | tee build.log || true (mvn -X -T 1C install 2>&1 | grep -A30 'not Maven 4 goals') > v3-goals.txt || true
Prevention
- Pair every Maven 4 -T rollout with one -X capture of the goal-level report.
- Note the message wording talks about 'thread-safe' but refers to the v4-API check; use the section headers in -X output to disambiguate.
When it happens
Trigger: Automatically emitted whenever the plugin-level 'not Maven 4 plugins' list is printed (threads > 1, unsafe v3 executions present, debug disabled).
Common situations: Maven 4 adopters deciding which exact goals block safe concurrency; support/triage workflows needing per-goal evidence.
Related errors
- Enable verbose output (-X) to see precisely which goals are
- Version not locked for default bindings plugins {}, you shou
- Your build is requesting concurrent execution, but this proj
- The following goals are not Maven 4 goals:
- The following plugins are not Maven 4 plugins:
AI-assisted analysis of apache/maven@e4093d4e12 (2026-08-21).
Data as JSON: /api/errors/3afc5b0fc5415a3a.
Report an issue: GitHub.