Почему 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)
    }
}
→ Ссылка