#android #kotlin #gradle #gradle-kotlin-dsl
#Android #котлин #грейдер #gradle-котлин-dsl
Вопрос:
Я экспериментирую с Kotlin DSL, но не могу заставить его распознавать объекты, которые я определил в buildSrc. Они решаются IDE, но когда я компилирую код, он не работает.
Это структура моего проекта:
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
Содержание зависимостей.кт:
/** * To define 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}" } } /** * To define dependencies */ 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 (тот, который выходит из строя первым):
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() mavenCentral() } dependencies { BuildPlugins.gradle BuildPlugins.kotlinGradle BuildPlugins.safeArgs // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } ...
Я также хочу отметить, что android { … } блок не распознается в файлах модулей gradle, но я думаю, что это может быть связано с неудачной компиляцией.
Ответ №1:
У вас есть файлы Котлина под src/main/java
. Они должны быть src/main/kotlin
включены, и вам нужно будет включить поддержку сборки Kotlin в файл buildSrc
Gradle (возможно, у вас есть это, вы не показали, что там buildSrc/build.gradle.kts
есть).
plugins { `kotlin-dsl` } repositories { mavenCentral() }