Почему rootProject/build.gradle.kts не подхватывает зависимости объявленные в модуле buildSrc
Прошу прощения, если вопрос глупый, но первый рз решил руками воткнуть kotlin gradle script.
Создал папку в корне buildSrc, в ней src/main/java/${package}. В корне build.gradle.kts
repositories {
jcenter()
}
plugins {
`kotlin-dsl`
}
Всё корректно подхватилось при билде, у папки появился значок модуля.
сделал файлик с зависимостями (dependencies.kt)
package iam.thevoid.sample.kmm.buildsrc
object Dependencies {
object Plugins {
const val sqlDelight = "com.squareup.sqldelight:gradle-plugin:${SqlDelight.version}"
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Kotlin.version}"
const val androidGradlePlugin = "com.android.tools.build:gradle:${GradlePlugin.version}"
}
object SqlDelight {
internal const val version = "1.4.4"
}
internal object Kotlin {
const val version = "1.4.30"
}
internal object GradlePlugin {
const val version = "4.0.1"
}
}
дальше иду в build.gradle.kts, добавляю свой класс через импорт (автокомплит работает, то есть звисимость на buildScr успешно подтянулась), подменяю зависимости на плагины со строк на свои (тоже автокоплит, всё в полном порядке):
import iam.thevoid.sample.kmm.buildsrc.Dependencies
buildscript {
.....
dependencies {
// classpath("com.squareup.sqldelight:gradle-plugin:1.4.4")
// classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30")
// classpath("com.android.tools.build:gradle:4.0.1")
classpath(Dependencies.Plugins.sqlDelight)
classpath(Dependencies.Plugins.kotlin)
classpath(Dependencies.Plugins.androidGradlePlugin)
}
}
....
Собираю - в build.gradle.kts модуля приложения ломается зависимость на плагин

Если закомментировать мои депенденси и заменить на строки, то всё в порядке
buildscript {
.....
dependencies {
classpath("com.squareup.sqldelight:gradle-plugin:1.4.4")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.30")
classpath("com.android.tools.build:gradle:4.0.1")
// classpath(Dependencies.Plugins.sqlDelight)
// classpath(Dependencies.Plugins.kotlin)
// classpath(Dependencies.Plugins.androidGradlePlugin)
}
}
Почему так происходит и что с этим можно сделать?
Ответы (1 шт):
По какой то причине рутовому build.gradle.kts не нравится директива import
Если написать таким образом
buildscript {
.....
dependencies {
classpath(iam.thevoid.sample.kmm.buildsrc.Dependencies.Plugins.sqlDelight)
classpath(iam.thevoid.sample.kmm.buildsrc.Dependencies.Plugins.kotlin)
classpath(iam.thevoid.sample.kmm.buildsrc.Dependencies.Plugins.androidGradlePlugin)
}
}
То всё будет работать нормально и проект соберётся
Можно вытащить файл Dependencies.kt из пеккейджа iam.thevoid.sample.kmm.buildsrc и положить в корень buildSrc/src/main/kotlin. Тогда можно писать более коротко
buildscript {
.....
dependencies {
classpath(Dependencies.Plugins.sqlDelight)
classpath(Dependencies.Plugins.kotlin)
classpath(Dependencies.Plugins.androidGradlePlugin)
}
}
