Gradle 7.2 自定义插件:如何在 apply(project: Project) 中使用版本目录?

A B*_*elp 6 gradle build.gradle android-gradle-plugin gradle-plugin gradle-kotlin-dsl

我有一个运行正常的 Gradle 7.2 自定义插件。我想将其配置为使用新的 Gradle 版本目录来获取依赖信息。我知道如何配置和使用版本目录,并为我们的共享依赖项生成了一个共享 jar。它正在被其他一些版本读取,没有任何问题。

但是,当插件设置依赖项时,我似乎找不到正确的咒语来使用插件的版本目录 jar。我不断收到“‘VersionCatalogsExtension’类型的扩展不存在”。

以下两个片段显示了我在 apply 方法中访问版本目录所做的操作:

    override fun apply(project: Project) {
        val libs = project
           .extensions
           .getByType(VersionCatalogsExtension::class.java)
           .named("libs")
        
        addBuildDependencies(libs)
            .
            .
            .
Run Code Online (Sandbox Code Playgroud)
private fun Project.addBuildDependencies(libs: VersionCatalog) {
    dependencies.apply {
        // BOMs
        add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, platform(libs.findDependency("arrow.bom").get()))
        add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, platform(libs.findDependency("detekt.bom").get()))
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何片段或重定向。

谢谢,迈克

Kar*_*hik -1

请确保将此代码块添加到 settings.gradle.kts 文件中

enableFeaturePreview("VERSION_CATALOGS")
// == Define locations for components ==
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    versionCatalogs {
        create("libs") {
            from(files("PATH/libs.versions.toml"))
        }
    }
}
Run Code Online (Sandbox Code Playgroud)