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

generatePomFileForAndroidPublication执行失败:原因及修复方案

问题分析与修复

问题原因

执行:sevenzip-javm:generatePomFileForAndroidPublication任务失败,核心原因是Gradle生成POM文件时,无法从依赖模块:androidCoreTools的多个变体中确定唯一匹配版本:

  • 当前模块的Android发布变体(消费者)需要编译时可用、针对Android优化的库,且匹配AgpVersionAttr=8.2.0、BuildTypeAttr=release、org.jetbrains.kotlin.platform.type=androidJvm这些属性。
  • 依赖模块:androidCoreTools的releaseApiElements提供了多个变体(如android-classes-jar、jar、android-lint等),这些变体都满足消费者的核心属性要求,但每个变体都带有消费者未声明的额外属性(如artifactType、VariantAttr)。
  • 由于缺乏足够的区分属性,Gradle无法自动选择唯一变体,从而抛出歧义错误。

修复方案

以下几种方式可解决该变体歧义问题:

方案1:在依赖声明中明确指定artifact类型

在当前模块androidMain的依赖配置中,为androidCoreTools添加属性过滤,明确选择jar类型的artifact:

androidMain.dependencies {
    implementation(libs.kotlinx.coroutines.core)
    implementation("org.example:androidCoreTools:1.0-SNAPSHOT") {
        attributes {
            attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, "jar")
        }
    }
    api("org.example:sevenzip-wrapper:1.0-SNAPSHOT")
}

方案2:在:androidCoreTools模块中限制发布的变体

若:androidCoreTools是可控模块,可修改其build.gradle.kts,仅发布核心的jar变体,避免多余artifact类型被包含:

android {
    // 其他原有配置...
    publishing {
        singleVariant("release") {
            withSourcesJar()
            allArtifacts {
                artifactType = "jar"
            }
        }
    }
}

方案3:全局配置变体过滤规则

在当前模块的build.gradle.kts中添加全局过滤,排除不需要的artifact类型:

configurations.all {
    incoming.variants {
        filter {
            it.attributes.getAttribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE) == "jar"
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:35:56