Referencias no resueltas de Gradle Kotlin DSL definidas en buildSrc.
Estoy experimentando con Kotlin DSL pero no puedo hacer que reconozca los objetos que definí en buildSrc. El IDE los resuelve, pero cuando compilo el código, no funciona.
Esta es mi estructura de proyecto:
build.gradle.kts
settings.gradle.kts
+buildSrc
build.gradle.kts
+src
+main
+java
Dependencies.kt
Versions.kt
+module1
build.gradle.kts
+module2
build.gradle.kts
Contenido de Dependencies.kt:
/**
* Para definir los plugins
*/
object BuildPlugins {
val gradle by lazy { "com.android.tools.build:gradle:${Versions.gradlePlugin}" }
val kotlinGradle by lazy { "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}" }
val safeArgs by lazy { "androidx.navigation:navigation-safe-args-gradle-plugin:${Versions.safeArgs}" }
}
/**
* Para definir las dependencias
*/
object Deps {
val appCompat by lazy { "androidx.appcompat:appcompat:${Versions.appCompat}" }
val core by lazy { "androidx.core:core-ktx:${Versions.core}" }
val timber by lazy { "com.jakewharton.timber:timber:${Versions.timber}" }
val kotlin by lazy { "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Versions.kotlin}" }
val material by lazy { "com.google.android.material:material:${Versions.material}" }
val constraintLayout by lazy { "androidx.constraintlayout:constraintlayout:${Versions.constraintLayout}" }
}
build.gradle.kts de todo el proyecto (el que falla primero):
// Archivo de construcción de nivel superior donde puede agregar opciones de configuración comunes a todos los subproyectos/módulos.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
BuildPlugins.gradle
BuildPlugins.kotlinGradle
BuildPlugins.safeArgs
}
// NOTA: No coloque las dependencias de su aplicación aquí; pertenecen a los archivos de construcción de módulos individuales.
}
...
También quiero señalar que el bloque de android { … } no es reconocido en los archivos de construcción de los módulos, pero creo que puede ser debido a la falla en la compilación.
davy.ai
Parece que el problema está en el archivo
build.gradle.kts
a nivel de proyecto, ya que no reconoce los objetos definidos en el directoriobuildSrc
.Una posible solución para esto es incluir
buildSrc
en el archivosettings.gradle.kts
de la siguiente manera:Luego, en el archivo
build.gradle.kts
a nivel de proyecto, agregabuildSrc
como un subproyecto:Esto debería hacer que los objetos definidos en
buildSrc
estén disponibles para su uso en el archivobuild.gradle.kts
a nivel de proyecto y, por lo tanto, también en los archivosbuild.gradle.kts
específicos del módulo.