执行gradle clean build构建失败:无法设置sourcesJar的classifier属性
Gradle构建失败:无法为Jar任务设置classifier属性
问题重现
执行命令:gradle clean build --stacktrace
构建失败关键错误:
应用插件'world-standalone-root'失败。
无法为类型为org.gradle.api.tasks.bundling.Jar的任务':reliance-aar:sourcesJar'设置未知属性'classifier'。
错误位置:构建文件 C:\Users\dayasagar.kmr\sun\reliance\build.gradle 第25行
问题原因
Gradle 7.x及以上版本中,Jar任务的classifier属性已被废弃,替换为archiveClassifier属性。当前使用的world-standalone-root插件(或自定义构建脚本)仍在使用旧的classifier属性,导致与Gradle 8.0不兼容。
解决方案
方案1:修改自定义任务配置(如果是手动定义的sourcesJar任务)
如果是在build.gradle中自行定义了sourcesJar任务,将classifier替换为archiveClassifier:
// 旧配置 task sourcesJar(type: Jar) { classifier = 'sources' // 其他配置 } // 修改为新配置 task sourcesJar(type: Jar) { archiveClassifier.set('sources') // 其他配置 }
方案2:升级world-standalone-root插件
如果sourcesJar任务是由world-standalone-root插件自动生成的,需要升级该插件到兼容Gradle 8.0的版本:
- 找到根build.gradle中应用该插件的代码,更新版本号:
plugins { id 'world-standalone-root' version '兼容Gradle8.0的版本号' }
- 若插件是通过buildscript引入的,同样更新版本:
buildscript { repositories { // 仓库配置 } dependencies { classpath '插件groupId:world-standalone-root:兼容Gradle8.0的版本号' } }
方案3:临时兼容(不推荐长期使用)
如果暂时无法升级插件或修改脚本,可以通过添加属性映射临时兼容:
tasks.withType(Jar) { ext.classifier = { archiveClassifier.get() } setProperty('classifier', 'sources') }
此方法仅为临时 workaround,建议尽快完成版本适配。
额外提示
本次构建还提示存在与Gradle 9.0不兼容的废弃特性,可执行gradle clean build --warning-mode all查看具体废弃项,提前做好适配准备。
内容的提问来源于stack exchange,提问作者DAYAASAAGAR
相关产品推荐
相关产品推荐

