在 buildSrc 中定义的 Gradle Kotlin DSL 未解析的引用
Posted
技术标签:
【中文标题】在 buildSrc 中定义的 Gradle Kotlin DSL 未解析的引用【英文标题】:Gradle Kotlin DSL unresolved references defined in buildSrc 【发布时间】:2022-01-06 08:22:36 【问题描述】:我正在尝试使用 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
Dependencies.kt 的内容:
/**
* 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
...
我还想指出,模块 gradle 文件中无法识别 android ... 块,但我认为这可能是因为编译失败。
【问题讨论】:
【参考方案1】:src/main/java
下有 Kotlin 文件。它们应该在 src/main/kotlin
中,并且您需要在 buildSrc
Gradle 文件中包含 Kotlin 构建支持(也许您有这个,您没有显示 buildSrc/build.gradle.kts
中的内容)
plugins
`kotlin-dsl`
repositories
mavenCentral()
【讨论】:
以上是关于在 buildSrc 中定义的 Gradle Kotlin DSL 未解析的引用的主要内容,如果未能解决你的问题,请参考以下文章
Android Gradle 插件Gradle 自定义 Plugin 插件 ⑦ ( 自定义 Gradle 插件导入方式 | buildSrc 插件导入 | 构建脚本中自定义插件 | 独立文件 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ⑥ ( 在 buildSrc 模块中依赖 Android Gradle 插件 | 完整代码示例 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ① ( buildSrc 目录中实现 Gradle 插件 | 创建 src/main/groovy 源码目录并编译 )
Android Gradle 插件Gradle 自定义 Plugin 插件 ② ( buildSrc 目录中实现 Gradle 插件 | 实现 Gradle 插件代码 | 模块引入插件并编译 )