如何在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
相关产品推荐
相关产品推荐

