我们有以下 Gradle 版本目录文件
libs.version.tomml
:
[libraries]
androidx-compose-material3 = { module = "libs.androidx.compose.material3", version = "1.2.1" }
如何在 Gradle 插件中引用上述库:
class ExamplePlugin : Plugin<Project> {
override fun apply(target: Project) {
target.dependencies {
implementation(libs.androidx.compose.material3)
}
}
}
我收到错误:
Unresolved reference: libs
版本目录中的类型安全访问器在常规类插件中不可用(也不会),因为此类插件是单独编译的。1
VersionCatalogsExtension
以非类型安全的方式访问版本目录。例如(使用 Kotlin 代码和 Kotlin DSL API):
class ExamplePlugin : Plugin<Project> {
override fun apply(target: Project) {
val versionCatalog = target.the<VersionCatalogsExtension>().named("libs")
target.dependencies {
versionCatalog.findLibrary("androidx.compose.material3").ifPresent {
lib -> add("implementation", lib)
}
}
}
}
这种方法在 Gradle 文档中提到过。
add
语法而不是 implementation
,因为我不相信 implementation
访问器在类插件中可用(类似于版本目录,类插件无法识别这样的配置自动存在)。
1 看来 Gradle 计划将它们引入 预编译脚本 插件,您可以在脚本文件而不是常规代码中编写这些插件。请参阅GitHub 问题