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.
Solutions
- Edit each listed location and align the plugin declaration (usually pin one version in pluginManagement)
- Remove redundant declarations so only the parent-managed one remains
- 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
- Keep one canonical declaration point per plugin; treat multiple declarations as review findings
- Remove plugin declarations from profiles unless the profile is actually activated
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
- Declared at location(s):
- - {}
- *
- Fix reported issues by adjusting plugin configuration or by…
- For more or less details, use 'maven.plugin.validation'…
AI-assisted analysis of apache/maven@e4093d4e12 (2026-08-21).
Data as JSON: /api/errors/99063d3355b772bd.
Report an issue: GitHub.
Appendix: 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)