Gradle Kotlin DSL неразрешенные ссылки, определенные в buildSrc

#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() }