Java-gradle-插件验证插件任务

Java-gradle-plugin validatePlugins task

我正在测试来自核心插件 java-gradle-pluginvalidatePlugins 任务,它似乎在构建期间什么都不做,或者如果我直接运行吧。

我有一个构建脚本,它用一个不存在的插件定义插件 class。 注意 foo.bar.NonexistingPluginClass 这个 class 不在我的源代码中。

plugins {
    id 'java-gradle-plugin'
}

gradlePlugin {
    plugins {
        create("simplePlugin") {
            id = "foo.bar.validation-plugin-test"
            implementationClass = "foo.bar.NonexistingPluginClass"
        }
    }
}

官方Gradle page表示正在进行以下验证:

The implementation-class property references a valid class file in the jar.

仍然当我 运行 build 任务也触发 validatePlugins 一个并且没有报告警告时,没有。另外,如果我检查 build/reports/plugin-development/validation-report.txt 文件只是空白。

相反,我看到的是,甚至在执行 validatePlugins 之前执行的 :jar 任务会在日志中抛出一条消息,如下所示:

> Task :compileJava
> Task :pluginDescriptors
> Task :processResources
> Task :classes

> Task :jar
:jar: A valid plugin descriptor was found for foo.bar.validation-plugin-test.properties but the implementation class foo.bar.NonexistingPluginClass was not found in the jar.

> Task :assemble
>...
> Task :validatePlugins
> Task :check
> Task :build

BUILD SUCCESSFUL in 1s

我是否遗漏了一些额外的配置,以至于我收到警告,即 implementationClass 实际上并未引用 validatePlugins 任务中的现有 class?或者我误解了文档?这是一个错误吗?

PS: 运行 Gradle 7.2, Java 15

任务ValidatePlugins不检查插件元数据但对插件执行静态代码分析类:

Validates plugins by checking property annotations on work items like tasks and artifact transforms. This task should be used in Gradle plugin projects for doing static analysis on the plugin classes.

您在构建过程中看到的输出与 java-gradle-plugin 的文档中描述的相符。它显示

[...] performs validation of plugin metadata during jar task execution.

进一步

Any failed validations will result in a warning message.