当我将我的Gradle版本从7.x升级到8.x,然后尝试发布我的插件时,我遇到了以下模糊的错误:
原因:类org.gradle.API.internal.provider.DefaultSetProperty无法强制转换为类java.util.Collection(org.gradle.api.internal.provider.DefaultSetProperty位于加载器org.gradle.internal.classloader. VisitableURLClassLoader@66cd51c3;集合在加载器“bootstrap”的模块java.base中)
我所做的唯一相关更改是删除pluginBundle
块:
pluginBundle {
website = "..."
vcsUrl = "..."
tags = listOf("...")
}
并将其迁移到最新实践中,因为Gradle团队已将其迁移到gradlePlugin
,以改进/简化流程:
gradlePlugin {
website.set("...")
vcsUrl.set("...")
plugins {
create("...") {
id = project.group.toString()
displayName = project.name
description = project.description.toString()
implementationClass = "..."
tags.set(setOf("..."))
}
}}
这些都是直接从官方文档中删除的,所以我很惊讶这会失败。如果有帮助,这里是我的相关项目依赖细节:
| 依赖性|版本|
| --------------|--------------|
| Kotlin|1.8.10节|
| java |十七岁|
| grad尔|八、0、2|
| com.gradle.plugin-publish |1.0.0版本|
| io.github.gradle-nexus.publish-plugin |1.1.0版本|
1条答案
按热度按时间d6kp6zgx1#
将com.gradle.plugin-publish升级到
1.1.x
。1.0.0
版本有一个严重的bug,当单独依赖gradlePlugin
块时会失败:版本1.1.0(最新)
gradlePlugin
块配置插件发布时处理tags
的bug参见:com.gradle.plugin-publish/1.1.0
在
8.0
中,pluginBundle
块被标记为删除。因此,当您从7.x
升级时,必须将这些属性移动到gradlePlugin
,这就是您遇到此错误的原因。您也可以在docs/publish-plugin建议升级中看到此说明:***注意:*如果您使用的是 1.0.X 版本的插件,请至少更新到 1.1.0 版本,该版本包含关键错误修复。
因此,只需升级到1.1.x就可以解决问题...
其他有用资源: