将Version Catalog发布至mavenLocal后外部应用引用报错求助
问题分析与解决
问题背景
你通过以下配置将Version Catalog发布至mavenLocal:
- 在
build.gradle.kts中引入maven-publish和version-catalog插件,指定group = "com.org.myproject" - 创建名为
version-catalog的MavenPublication,直接使用本地../../gradle/libs.versions.toml作为artifact(因为用components会生成空的toml文件) - 自身项目的
settings.gradle.kts可从本地文件加载catalog,但外部应用通过from("com.org.myproject:version-catalog:1.0")引用时,出现无法解析依赖的错误。
核心原因
直接用本地文件作为artifact发布时,Gradle无法识别这是一个标准的Version Catalog构件——标准的Catalog发布需要遵循特定的格式(比如附带catalog分类器、正确的POM元数据),而你直接上传原始toml文件的方式不符合规范,导致外部项目无法解析。
正确的解决步骤
1. 修正发布配置,生成标准Catalog构件
不要直接指定本地toml文件作为artifact,而是通过version-catalog插件的能力生成合规的Catalog构件。如果之前用components生成空文件,大概率是因为Catalog内容定义方式不对,调整如下:
修改你的build.gradle.kts:
plugins { `maven-publish` `version-catalog` } group = "com.org.myproject" version = "1.0" // 方式1:直接在配置中定义Catalog内容 versionCatalog { catalog { // 定义版本号 version("kotlin", "1.9.20") version("spring-boot", "3.2.0") // 定义依赖库 library("kotlin-stdlib", "org.jetbrains.kotlin", "kotlin-stdlib").versionRef("kotlin") library("spring-boot-starter-web", "org.springframework.boot", "spring-boot-starter-web").versionRef("spring-boot") } } // 方式2:从本地已有的toml文件导入内容(替代上面的直接定义) // versionCatalog { // catalog.from(file("../../gradle/libs.versions.toml")) // } publishing { publications { create<MavenPublication>("version-catalog") { // 使用插件生成的合规component,自动生成正确的构件和元数据 from(components["versionCatalog"]) } } repositories { mavenLocal() } }
2. 验证发布结果
执行./gradlew publish后,检查mavenLocal对应目录(通常是~/.m2/repository/com/org/myproject/version-catalog/1.0/),应该能看到:
version-catalog-1.0.catalog.tomlversion-catalog-1.0.pom- 其他必要的元数据文件
3. 外部项目正确引用
在外部项目的settings.gradle.kts中,先配置mavenLocal()作为仓库,再引用Catalog:
pluginManagement { repositories { mavenLocal() gradlePluginPortal() } versionCatalogs { create("libs") { from("com.org.myproject:version-catalog:1.0") } } }
为什么直接上传toml文件不行?
Gradle解析Version Catalog时,会优先查找带有catalog分类器的toml文件,同时需要对应的POM元数据标注这是一个Catalog构件。直接上传原始toml文件时,缺少这些关键元数据,Gradle无法识别它为合法的Catalog依赖,因此解析失败。
内容的提问来源于stack exchange,提问作者samsira
相关产品推荐
相关产品推荐

