gradle - Java-gradle-plugin validatePlugins 任务
问题描述
我正在测试validatePlugins
来自核心插件java-gradle-plugin 的任务,该插件在构建期间似乎什么都不做,或者如果我直接运行它。
我有一个构建脚本,它使用不存在的插件类定义插件。注意foo.bar.NonexistingPluginClass
这个类不在我的源代码中。
plugins {
id 'java-gradle-plugin'
}
gradlePlugin {
plugins {
create("simplePlugin") {
id = "foo.bar.validation-plugin-test"
implementationClass = "foo.bar.NonexistingPluginClass"
}
}
}
现在Gradle官方页面显示正在进行以下验证:
implementation-class 属性引用 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
任务中现有类的警告?还是我误解了文档?这是一个错误吗?
PS:使用 Gradle 7.2、Java 15 运行
解决方案
该任务ValidatePlugins
不检查插件元数据,但对插件类执行静态代码分析:
通过检查任务和工件转换等工作项的属性注释来验证插件。此任务应在 Gradle 插件项目中用于对插件类进行静态分析。
您在构建期间看到的输出与java-gradle-plugin文档中描述的内容相匹配。它读到
jar
[...] 在任务执行期间执行插件元数据的验证。
并进一步
任何失败的验证都将导致警告消息。
推荐阅读
- android - Android 通过 AlarmManager 和 Calendar.DAY_OF_WEEK 设置多个闹钟
- html - 在 div 元素周围创建高亮,其中高亮元素具有白色填充和彩色边框
- c# - Html.RenderAction 不使用我的 routeValue 参数
- c++ - Xcode 链接器错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- rust - 如何在不使用 Copy 或 Clone 的情况下在 Rust 中克隆结构?
- neo4j - 有没有办法加快 Neo4j Graph 的更新速度?
- python - 在我的脚本结束时,如何将我下载的文件移动到新文件夹?
- r - 在 R for windows 中安装 ncdf 和 clim.pact 包
- python - 我在 Python 中循环上传文件时遇到问题?
- compiler-construction - 编译器构造 - 为什么某些令牌需要带有回溯的最终状态?