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

如何在Gradle插件中引用libs.versions.toml文件中的依赖

解决Gradle插件中libs未解析的问题

问题原因

libs是Gradle版本目录(Version Catalog)自动生成的类型安全访问器,但它默认只在项目的构建脚本(比如build.gradle.kts)里可用,自定义插件类没法直接调用这个自动生成的对象,所以会触发Unresolved reference: libs错误。

可行解决方案

方案1:直接通过target.libs调用(Gradle 7.4+适用)

如果你的Gradle版本在7.4及以上,直接在插件代码里用target.libs替代原来的libs即可,修改后代码如下:

class ExamplePlugin : Plugin<Project> {

    override fun apply(target: Project) {
        target.dependencies {
            implementation(target.libs.androidx.compose.material3)
        }
    }
}

方案2:手动加载版本目录(兼容低版本Gradle)

要是你的Gradle版本低于7.4,或者需要更灵活的控制,可以手动加载libs.version.toml文件来获取依赖:

class ExamplePlugin : Plugin<Project> {

    override fun apply(target: Project) {
        val versionCatalog = target.rootProject.layout.versionCatalogs.named("libs")
        target.dependencies {
            implementation(versionCatalog.findLibrary("androidx-compose-material3").get())
        }
    }
}

这段代码通过versionCatalogs.named("libs")手动获取版本目录实例,再用findLibrary定位到你需要的依赖。

额外检查:确保版本目录配置正确

别忘了确认settings.gradle.kts(或settings.gradle)里已经正确引入了版本目录文件,必须有以下配置:

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("libs.version.toml"))
        }
    }
}

要是这部分配置缺失,不管是构建脚本还是插件,都没法识别libs对象。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:48:20