【问题标题】:Java-gradle-plugin validatePlugins taskJava-gradle-plugin validatePlugins 任务
【发布时间】:2021-08-20 06:09:59
【问题描述】:

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

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

plugins {
    id 'java-gradle-plugin'
}

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

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

实现类属性引用了一个有效的类文件 罐子。

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

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

> 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 任务中的现有类的警告?还是我误解了文档?这是一个错误吗?

PS:使用 Gradle 7.2、Java 15 运行

【问题讨论】:

    标签: gradle gradle-plugin


    【解决方案1】:

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

    通过检查任务和工件转换等工作项的属性注释来验证插件。这个任务应该在 Gradle 插件项目中用于对插件类进行静态分析。

    您在构建过程中看到的输出与java-gradle-plugin 文档中的描述相匹配。上面写着

    [...] 在jar 任务执行期间对插件元数据进行验证。

    还有更多

    任何失败的验证都会导致警告消息。

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 2016-06-24
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多