java-gradle-plugin的validatePlugins任务未校验不存在的实现类如何解决
Gradle 7.x版本validatePlugins未校验缺失implementationClass问题解答
- 该现象是Gradle 7.2版本的原生设计,不属于配置错误或对文档的理解偏差。
Gradle官方文档中关于validatePlugins校验implementationClass存在性的说明,是针对Gradle 8.0及以后版本的逻辑调整。你使用的7.2版本中,该校验逻辑被内置在jar任务中而非validatePlugins任务中,这就是你只能看到jar任务输出提示、validatePlugins无输出且报告为空的核心原因。 - Gradle 7.x版本的
validatePlugins仅覆盖以下校验范围:- 插件实现类是否正确实现
org.gradle.api.Plugin接口 - 插件实现类是否存在公共无参构造函数
- 插件属性是否使用了合法的增量编译注解
不会校验类本身是否存在于编译输出路径。
- 插件实现类是否正确实现
- 如果你需要在7.2版本中将该类不存在的问题升级为构建失败,避免构建成功但插件实际不可用的问题,可以在构建脚本中添加如下配置:
tasks.named('jar') { pluginValidation { onInvalidPluginDescriptor { descriptorProblem -> throw new GradleException("插件校验失败:${descriptorProblem.message}") } } } - 如果你希望使用
validatePlugins完成该类校验,直接升级Gradle版本到8.0及以上即可,该版本已经把jar任务中的插件描述符校验逻辑全部迁移到了validatePlugins任务中,同时会把校验结果写入对应的报告文件。
内容的提问来源于stack exchange,提问作者RenatoIvancic
相关产品推荐
相关产品推荐

