升级Gradle Quarkus插件至2.10.0.Final报类转换异常
Quarkus 2.10.0.Final Gradle插件应用失败类转换异常
问题复现场景
将Gradle项目的Quarkus插件升级至2.10.0.Final版本后,执行跳过测试的构建命令:
./gradlew build -x test
构建直接失败,抛出如下异常栈:
An exception occurred applying plugin request [id: 'io.quarkus', version: '2.10.0.Final'] > Failed to apply plugin 'io.quarkus'. > class org.gradle.api.internal.provider.DefaultProvider cannot be cast to class org.gradle.api.internal.provider.CollectionProviderInternal (org.gradle.api.internal.provider.DefaultProvider and org.gradle.api.internal.provider.CollectionProviderInternal are in unnamed module of loader org.gradle.internal.classloader.VisitableURLClassLoader @685cb137)
初始容易误判为Gradle无法拉取到对应版本插件,但实际上2.10.0.Final版本的Quarkus插件已经公开发布在Gradle插件门户,不存在发布缺失问题。
现有配置与环境
gradle.properties配置
quarkusPluginVersion=2.10.0.Final quarkusPlatformArtifactId=quarkus-bom quarkusPluginId=io.quarkus quarkusPlatformGroupId=io.quarkus.platform quarkusPlatformVersion=2.10.0.Final
settings.gradle配置
pluginManagement { repositories { mavenLocal() mavenCentral() gradlePluginPortal() } plugins { id "${quarkusPluginId}" version "${quarkusPluginVersion}" } }
运行环境
通过./gradlew --version查询到环境信息如下:
$ ./gradlew --version ------------------------------------------------------------ Gradle 7.3.3 ------------------------------------------------------------ Build time: 2021-12-22 12:37:54 UTC Revision: 6f556c80f945dc54b50e0be633da6c62dbe8dc71 Kotlin: 1.5.31 Groovy: 3.0.9 Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021 JVM: 11.0.15 (Azul Systems, Inc. 11.0.15+10-LTS) OS: Mac OS X 12.1 x86_64
根因分析
该异常属于版本兼容性问题:Quarkus 2.10.0.Final版本的Gradle插件依赖Gradle 7.4.2版本才正式提供的CollectionProviderInternal相关内部API,当前环境使用的Gradle 7.3.3版本中对应Provider类未实现该接口,因此触发类转换异常,和插件是否能正常拉取没有关系。
解决步骤
- 升级项目的Gradle Wrapper版本至7.4.2及以上(Quarkus 2.10.x系列推荐使用7.4.2版本即可),在项目根目录执行如下命令:
./gradlew wrapper --gradle-version=7.4.2 - 升级完成后重新执行构建命令,插件即可正常加载,构建流程可正常推进。
内容的提问来源于stack exchange,提问作者HknLof
相关产品推荐
相关产品推荐

