难以将 Gradle 配置移动到外部脚本

J-b*_*bob 5 gradle kotlin

我正在尝试将 Gradle 构建脚本的某些部分移动到可以在项目之间共享的外部配置文件。以下是Detekt插件的示例:

当前代码

build.gradle.kts(仅压缩相关部分)

plugins{
    id("io.gitlab.arturbosch.detekt").version("1.19.0-RC1")
}
...
detekt{
   ...
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试做什么

构建.gradle.kts

apply(File("common.gradle.kts"))
Run Code Online (Sandbox Code Playgroud)

通用.gradle.kts

plugins {
    id("io.gitlab.arturbosch.detekt").version("1.19.0-RC1")
}

detekt{
   ...
}
Run Code Online (Sandbox Code Playgroud)

但当我这样做时,我收到此错误:

<my_project>\common.gradle.kts:7:1: Unresolved reference: detekt
Run Code Online (Sandbox Code Playgroud)

所以该plugin部分似乎没有做任何事情。需要明确的是,该插件不需要节中的任何内容,只需声明即可dependencies在内部正常工作。build.gradle.ktsplugin

为什么这不起作用?

And*_*mon 1

我将它与普通的 Groovy Gradle 脚本一起使用,如下所示:

# detekt.gradle
apply plugin: 'io.gitlab.arturbosch.detekt'

tasks.detekt.jvmTarget = "1.8"

detekt {
    buildUponDefaultConfig = true
    input = files("${rootProject.projectDir}/app/src")
    config = files("${rootProject.projectDir}/detekt.yml")

    reports {
        html.enabled = true
        xml.enabled = true
    }
}
Run Code Online (Sandbox Code Playgroud)
# build.gradle
buildscript {
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath libs.android.gradle
        classpath libs.kotlin.gradle
        classpath libs.detekt
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

subprojects {
    apply from: rootProject.file('detekt.gradle')
    apply from: rootProject.file('ktlint.gradle')
    apply from: rootProject.file('spotless.gradle')
    ...
}
Run Code Online (Sandbox Code Playgroud)