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

Gradle导出versionCatalogs库被引用时报No matching variant错误如何解决?

问题修复方案

错误原因

你当前打包的构件被标记为普通Java库变体,和使用方需要的version-catalog变体属性不匹配,核心是因为模块中同时引入了java-library和version-catalog插件,Java插件生成的默认变体覆盖了版本目录需要的变体配置。

修复步骤

方案一:模块仅作为版本目录使用(最常用)

如果这个模块不需要打包Java/Kotlin代码,仅用来发布统一版本目录,直接删除冗余配置即可:

  1. 修改插件配置块,移除不必要的Java和Kotlin插件:
plugins {
    // 删掉下面两行
    // id 'java-library'
    // id 'kotlin'
    id 'version-catalog'
}
  1. 删掉多余的Java版本配置块:
// 整块删除
// java {
//     sourceCompatibility = JavaVersion.VERSION_1_7
//     targetCompatibility = JavaVersion.VERSION_1_7
// }
  1. 确认发布脚本publish-module.gradle中是基于components.versionCatalog发布构件,示例发布配置参考:
publishing {
    publications {
        maven(MavenPublication) {
            groupId = PUBLISH_GROUP_ID
            artifactId = PUBLISH_ARTIFACT_ID
            version = PUBLISH_VERSION
            from components.versionCatalog
        }
    }
}

修改完成后重新发布新版本,使用方引用对应新版本即可正常识别。

方案二:模块需要同时作为Java库和版本目录发布

如果模块中确实有Java/Kotlin代码需要同时发布,需要手动配置版本目录的消费变体:

  1. 增加变体属性配置:
configurations {
    versionCatalogElements {
        canBeResolved = false
        canBeConsumed = true
        attributes {
            attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.PLATFORM))
            attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.VERSION_CATALOG))
        }
    }
}

artifacts {
    versionCatalogElements catalog.versionCatalog
}
  1. 在发布配置中把上述变体加入发布产物即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:09:02