Kotlin多平台项目发布至Bintray遇双错误求助
解决Kotlin多平台项目发布Bintray的两个失败问题
我来帮你拆解这两个错误的核心原因,再给出针对性的修复方案:
错误1::bintrayUpload执行失败 - 找不到publishableFiles属性
这个问题本质是Kotlin多平台项目的发布配置没适配Gradle的多平台组件模型,再加上可能的Bintray插件版本兼容性问题导致的。
修复步骤:
- 调整Publication配置,关联KMP专属组件
你当前用的普通MavenPublication无法正确识别Kotlin多平台的产物,需要修改发布配置,关联KMP的专用组件:
publishing { repositories { maven { url = project.projectBintrayRepo } } publications { create<MavenPublication>("mavenProject") { // 关键:关联Kotlin多平台的发布组件 from(components["kotlinMultiplatform"]) groupId = project.groupId artifactId = project.projectBintrayArtifactName version = project.kyugaVersion withPom(pom) } } }
- 确保Bintray插件版本兼容
如果你用的是Gradle 7+,建议使用最后维护的Bintray插件版本(1.8.5),在settings.gradle.kts(或settings.gradle)里配置:
plugins { id("com.jfrog.bintray") version "1.8.5" apply false }
旧版本插件无法适配新Gradle版本的Publication API,才会出现找不到publishableFiles属性的问题。
错误2::bintrayPublish执行失败 - HTTP 404版本未找到
这个错误是因为Bintray仓库中不存在你要发布的0.0.6版本,Bintray要求发布前必须先在后台创建版本,或者配置插件自动创建。
修复步骤:
检查Bintray后台的版本状态
登录你的Bintray账号,进入messai/maven仓库,找到kyuga包,确认是否已经创建了0.0.6版本。如果没有,要么手动在后台创建,要么通过插件配置自动创建。配置Bintray插件自动创建版本
在你的Gradle配置中添加Bintray插件的详细配置,开启自动创建版本和自动发布:
bintray { user = project.findProperty("bintray.user")?.toString() key = project.findProperty("bintray.key")?.toString() pkg { repo = "maven" // 对应你的Bintray仓库名 name = project.projectBintrayArtifactName // 对应包名kyuga version { name = project.kyugaVersion // 版本号0.0.6 desc = "Kyuga SDK version ${project.kyugaVersion}" vcsTag = "v${project.kyugaVersion}" // 建议关联Git标签 publish = true // 自动发布版本 } publish = true // 自动将构件同步到仓库 } }
- 验证仓库URL正确性
确认project.projectBintrayRepo的URL格式正确,应该类似:
https://api.bintray.com/maven/messai/maven/kyuga/;publish=1
确保路径中的仓库名、包名和你后台的配置完全一致。
最后提醒:Bintray的公开服务已经停止,但私有Bintray实例仍然可以正常使用,如果是用公开服务的话,建议迁移到Maven Central等其他仓库哦。
内容的提问来源于stack exchange,提问作者vizsatiz
相关产品推荐
相关产品推荐

