在预编译的Gradle插件中使用版本目录

ct3nt3jp  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(155)

我正在将我的项目与多个模块转换为使用预编译的Gradle插件。此项目还使用Gradle的版本目录(libs.versions.toml),其中的文档明确显示了如何将其与buildSrc目录的build.gradle.kts共享,该目录运行良好。但不幸的是,这并不适用于插件本身。范例:

build-logic/settings.gradle.kts

rootProject.name = "build-logic"

dependencyResolutionManagement {
    versionCatalogs {
        create("libs") {
            from(files("../gradle/libs.versions.toml"))
        }
    }
}

build-logic/build.gradle.kts:

plugins {
    `kotlin-dsl`
    `kotlin-dsl-precompiled-script-plugins`
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(libs.plugins.kotlin.jvm) // works fine
}

构建逻辑/src/main/Kotlin/my-template.gradle.kts

plugins {
    id("org.jetbrains.kotlin.jvm")
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(libs.kotlinx.serialization) // "Unresolved reference: libs"
}

可以在my-template.gradle.kts中引用“libs”吗?
谢谢你

velaa5lx

velaa5lx1#

因此,此请求存在open issue,并且已找到解决方法。要在预编译的插件中使用libs,您必须添加以下内容:
build-logic/build.gradle.kts

dependencies {
    implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
}

build-logic/src/main/Kotlin/my-template.gradle.kts

import org.gradle.accessors.dm.LibrariesForLibs

val libs = the<LibrariesForLibs>()

dependencies {
    implementation(libs.kotlinx.serialization) // works now!
}

信用

相关问题