使用 Kotlin DSL 在单独的文件中配置插件

all*_*nex 7 gradle gradle-kotlin-dsl

为了区分不同的插件配置,我使用单独的文件。

例如:

./build.gradle.kts
./detekt.gradle.kts
./settings.gradle.kts
./module1
./module2
...

在根中,build.gradle.kts我有这个:

plugins {
    id("io.gitlab.arturbosch.detekt") version DependencyVersion.Detekt
}

buildscript {
    dependencies {
        classpath(io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.1.1)
    }
}
Run Code Online (Sandbox Code Playgroud)

并配置它我去detekt.gradle.kts并把:

apply(plugin = "io.gitlab.arturbosch.detekt")

detekt {
    // configure
}
Run Code Online (Sandbox Code Playgroud)

但是detekt找不到 lambda。还尝试过:

apply(plugin = "io.gitlab.arturbosch.detekt")

configure<io.gitlab.arturbosch.detekt.Detekt> {
    // configure
}
Run Code Online (Sandbox Code Playgroud)

但它没有找到.Detekt

使用 JaCoCo,我使用第二种方法没有任何问题,但它不适用于 Detekt 或 SonarQube。

如何在单独的文件中配置插件?

谢谢。

ski*_*ipy 1

尝试如下所示的方法。我在我的主 gradle 中声明了一个插件“sonarqube”。然后,我将文件 sonar.gradle.kts 应用到 build.gradle.kts 文件的末尾。

    build.gradle.kts:
    plugins {
      id("org.sonarqube") version "2.8" apply false
    }
    ...

    apply(from="$rootDir/gradle/includes/sonar.gradle.kts")    

    gradle/includes/sonar.gradle.kts:
    apply(plugin="org.sonarqube")
Run Code Online (Sandbox Code Playgroud)

使用上面的设置,我可以运行“gradle sonarqube”