gradle/gradle · warning
Plugin validation finished with warnings:{}{}
Error message
Plugin validation finished with warnings:{}{} What it means
The validatePlugins task runs java-gradle-plugin validation and splits results into warnings and errors. With only warnings present (or with errors when ignoreFailures is true), it logs this summary followed by the rendered problem list instead of failing the build. The rendered problems name each concrete issue, such as descriptor mismatches or task properties missing validation annotations.
Source
Thrown at platforms/extensibility/plugin-development/src/main/java/org/gradle/plugin/devel/tasks/ValidatePlugins.java:192
List<? extends ProblemInternal> warnings = parsedProblems.getWarnings();
List<? extends ProblemInternal> errors = parsedProblems.getErrors();
if (errors.isEmpty() && warnings.isEmpty()) {
getLogger().info("Plugin validation finished without warnings.");
} else if (getFailOnWarning().get() || !errors.isEmpty()) {
if (getIgnoreFailures().get()) {
getLogger().warn("Plugin validation finished with errors. {}{}{}",
annotateTaskPropertiesDoc(),
System.lineSeparator(),
renderProblems(warnings, errors));
} else {
ProblemReporter reporter = getServices().get(ProblemsInternal.class).getReporter();
List<ProblemInternal> reportedProblems = WorkValidationUtils.deduplicateAndTruncate(Stream.concat(warnings.stream(), errors.stream()).collect(toImmutableList()));
WorkValidationException exception = WorkValidationException.withSummaryForPlugin(reportedProblems.size(), List.of(annotateTaskPropertiesDoc()));
throw reporter.throwing(exception, reportedProblems);
}
} else {
getLogger().warn("Plugin validation finished with warnings:{}{}",
System.lineSeparator(),
renderProblems(warnings, errors));
}
}
private static String renderProblems(List<? extends ProblemInternal> warnings, List<? extends ProblemInternal> errors) {
List<ProblemInternal> all = Stream.concat(warnings.stream(), errors.stream()).collect(toImmutableList());
StringWriter writer = new StringWriter();
ProblemWriter.simple().write(all, writer);
return writer.toString();
}
private String annotateTaskPropertiesDoc() {
return getDocumentationRegistry().getDocumentationRecommendationFor("on how to annotate task properties", "incremental_build", "sec:task_input_output_annotations");
}
/**
* The classes to validate.View on GitHub (pinned to 534f27719b)
Solutions
- Read the rendered problems directly below the summary line: they identify each offending plugin, task, and property.
- Fix each item: correct descriptors and annotate custom task properties with @Input, @Output, @Internal etc. per the linked task properties documentation.
- Remove validatePlugins.ignoreFailures = true once fixed so real errors fail the build again.
- Run ./gradlew validatePlugins alone for fast iteration while fixing.
Example fix
// before: task property without validation annotation -> warning
abstract class MyTask extends DefaultTask {
String fileName
}
// after
abstract class MyTask extends DefaultTask {
@Input String fileName
} Defensive patterns
Strategy: validation
Validate before calling
tasks.named('validatePlugins') {
ignoreFailures = false // make validation problems fail CI instead of warn
} Prevention
- Run ./gradlew validatePlugins in CI with ignoreFailures left at false.
- Annotate every custom task property with @Input/@Output/@Internal as appropriate.
- Treat each rendered warning as a to-do item before publishing a plugin.
When it happens
Trigger: Running validatePlugins (or build, which wires it in) on a plugin project where validation produced warnings, e.g. the descriptor warnings from JavaGradlePluginPlugin (missing/invalid descriptors) or custom task properties lacking @Input/@Output annotations. With getIgnoreFailures() = true even errors only produce this warning.
Common situations: Plugin projects with incomplete gradlePlugin declarations; custom tasks without proper property annotations; teams temporarily setting validatePlugins.ignoreFailures = true.
Related errors
- Problem group name must not be blank
- Problem group displayName must not be blank
- Problem id name must not be blank
- Problem id displayName must not be blank
- Problem id parent must not be null
AI-assisted analysis of gradle/gradle@534f27719b (2026-08-22).
Data as JSON: /api/errors/a25062a15774297e.
Report an issue: GitHub.