Dificultad para mover la configuración de Gradle a un script externo.
Estoy intentando mover algunas partes de mi script de construcción de Gradle a un archivo de configuración externo que se pueda compartir entre proyectos. Aquí hay un ejemplo con el plugin Detekt:
Código actual
build.gradle.kts (condensado para mostrar solo las partes relevantes)
plugins{
id("io.gitlab.arturbosch.detekt").version("1.19.0-RC1")
}
...
detekt{
...
}
Lo que intento hacer
build.gradle.kts
apply(File("common.gradle.kts"))
common.gradle.kts
plugins {
id("io.gitlab.arturbosch.detekt").version("1.19.0-RC1")
}
pero cuando hago esto, obtengo este error:
<my_project>\common.gradle.kts:7:1: Referencia no resuelta: detekt
Entonces, la sección de plugin
no parece estar haciendo nada. Y para dejar claro, este plugin no necesita nada en la sección de dependencies
, funciona bien dentro de build.gradle.kts
solo con la declaración de plugin
.
¿Por qué no funciona?
davy.ai
El problema al mover la configuración del plugin Detekt a un archivo externo es que el archivo principal
build.gradle.kts
no tiene visibilidad a la extensióndetekt
definida encommon.gradle.kts
. Una forma de solucionar este problema es declarar una variable encommon.gradle.kts
que contenga la configuración del plugin Detekt, y luego hacer referencia a esa variable enbuild.gradle.kts
. Aquí hay un ejemplo:common.gradle.kts
build.gradle.kts
En este ejemplo, la variable
detektConfig
encommon.gradle.kts
es una lambda que contiene la configuración del plugin Detekt. Cuandobuild.gradle.kts
aplicacommon.gradle.kts
, entonces invoca esta lambda para ejecutar la configuración del plugin Detekt. De esta manera, la extensióndetekt
definida encommon.gradle.kts
está disponible enbuild.gradle.kts
.