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

  1. Read the rendered problems directly below the summary line: they identify each offending plugin, task, and property.
  2. Fix each item: correct descriptors and annotate custom task properties with @Input, @Output, @Internal etc. per the linked task properties documentation.
  3. Remove validatePlugins.ignoreFailures = true once fixed so real errors fail the build again.
  4. 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

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


AI-assisted analysis of gradle/gradle@534f27719b (2026-08-22). Data as JSON: /api/errors/a25062a15774297e. Report an issue: GitHub.