You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止KMP应用中iOS构件发布至Maven仓库?

问题原因

你遇到的报错是因为Gradle的配置阶段顺序问题:当你在publications的configureEach里直接调用tasks.named()时,对应的iOS发布任务还没被Gradle创建出来。Gradle会先配置publications,之后才会生成对应的发布任务,所以此时查找任务必然失败。

解决方案

这里提供三种可行的修复方式,你可以根据需求选择:

方式1:延迟到配置阶段结束后再修改任务状态

通过afterEvaluate让任务配置逻辑延迟到所有项目配置完成、任务都创建好之后执行:

publishing {
    publications {
        withType(MavenPublication).configureEach {
            if (name.toLowerCase().contains("ios")) {
                project.afterEvaluate {
                    tasks.named("publish${name.capitalize()}PublicationToMavenRepository").configure {
                        enabled = false
                    }
                }
            }
        }
    }
}

方式2:直接移除iOS相关的Publication(更彻底)

从根源上不让iOS的Publication生成,自然就不会创建对应的发布任务:

publishing {
    publications {
        // 先移除所有包含"ios"的publication
        matching { pub -> pub.name.toLowerCase().contains("ios") }.all {
            remove(it)
        }

        // 再配置剩余的Android等publication
        withType(MavenPublication).configureEach {
            // 这里写你的通用配置,比如groupId、artifactId、version等
            groupId = "com.your.group"
            artifactId = "shared"
            version = "1.0.0"
        }
    }
}

方式3:批量过滤发布任务

直接针对PublishToMavenRepository类型的任务进行过滤,禁用所有iOS相关的任务:

tasks.withType(PublishToMavenRepository).configureEach {
    if (name.toLowerCase().contains("ios")) {
        enabled = false
    }
}

内容的提问来源于stack exchange,提问作者dev0708

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:22:32