升级Gradle 6后出现getPublishableFiles方法不存在错误
Gradle升级6.x后JFrog Artifactory插件报错NoSuchMethodError的解决办法
问题背景
- 使用
maven-publish和JFrog Artifactory插件的Gradle项目 - 从Gradle 5.6.4升级至6.9.4(升级到6.0即可触发问题)
问题现象
执行构建命令:
./gradlew clean build
在任务启动前就失败,报错核心信息:
Caused by: java.lang.NoSuchMethodError: org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal.getPublishableFiles()Lorg/gradle/api/file/FileCollection;
问题原因
Gradle 6.x重构了Maven发布模块的内部API,移除了MavenPublicationInternal.getPublishableFiles()方法。你当前使用的build-info-extractor-gradle:4.8.1版本过于老旧,未适配该API变更,导致反射调用失败。
解决方案
升级JFrog Artifactory Gradle插件版本至兼容Gradle 6.x的版本,官方从4.16.0版本开始全面支持Gradle 6.x,建议使用最新稳定版。
修正后的代码示例
apply plugin: "maven-publish" apply plugin: "com.jfrog.artifactory" buildscript { dependencies { // 替换为兼容Gradle 6.x的插件版本,示例为4.32.0(可按需选择更高稳定版) classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.32.0" } } publishing { publications { mavenJava(MavenPublication) { from components.java } } } artifactory { publish { defaults { publications('mavenJava') } } }
额外提示
后续若升级Gradle到7.x及以上版本,需同步升级插件版本,确保插件与Gradle版本的兼容性。
内容的提问来源于stack exchange,提问作者Kenny Linsky
相关产品推荐
相关产品推荐

