我正在测试核心插件java-gradle-plugin的validatePlugins任务,它似乎在构建过程中什么也不做,如果我直接运行它的话。
我有一个构建脚本,它用一个不存在的插件类定义插件。注意,foo.bar.NonexistingPluginClass这个类不在我的源代码中。
plugins {
id 'java-gradle-plugin'
}
gradlePlugin {
plugins {
create("simplePlugin") {
id = "foo.bar.validation-plugin-test"
implementationClass = "foo.bar.NonexistingPluginClass"
}
}
}现在,官方的分级页表示,正在进行以下验证:
实现类属性引用jar中的有效类文件。
不过,当我运行build任务时,它也会触发validatePlugins 1,并且没有报告警告,什么都没有。另外,如果我检查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任务的现有类?还是我曲解了文件?这是个虫子吗?
PS:使用Gradle 7.2,Java 15运行
发布于 2021-08-20 07:13:16
任务ValidatePlugins不检查插件元数据,而是对插件类进行静态代码分析:
通过检查工作项(如任务和工件转换)上的属性注释来验证插件。这个任务应该在Gradle插件项目中用于对插件类进行静态分析。
您在构建过程中看到的输出与java级插件文档中描述的内容相匹配。上面写着
..。在
jar任务执行期间执行插件元数据的验证。
以及进一步
任何失败的验证都将导致一条警告消息。
https://stackoverflow.com/questions/68857663
复制相似问题