kotlin - 构建.gradle.kts :10:28: Unresolved reference: settings

标签 kotlin gradle-kotlin-dsl

我已经看到在 build.gradle.kts 脚本中使用“按设置”委派的示例,但无论我尝试做什么,Gradle 都会提示设置是未解析的引用。如果我将“设置”更改为“项目”,Gradle 会很高兴。是否已弃用“按设置”?我查看了 Gradle 6.4.1 手册,它显示了这个委托(delegate)。我附上了一张图片,显示了 Initializr 生成的一个简单的 Spring Boot 应用程序,唯一的变化是添加了 gradle.properties 文件和 build.gradle.kts 文件中的委托(delegate)。我真的很感激关于这个问题的任何提示......我知道我可以使用“额外”属性或找到针对项目对象的属性,但是,坦率地说,这个问题让我很恼火,以至于我需要知道什么是错的! :P。感谢您的帮助...

enter image description here

最佳答案

project 委托(delegate)在类 ProjectDelegate 中定义。您的构建脚本是针对扩展 ProjectKotlinBuildScript 实例进行评估的,因此委托(delegate)可用。

但是,当评估 settings.gradle 时,项目尚未配置,因此没有 KotlinBuildScript 的实例。相反,该脚本是根据 KotlinSettingsScript 的实例进行评估的,该实例扩展了 Settings,它具有 settings 委托(delegate)。我不认为这个委托(delegate)可用于项目构建脚本。

在这两种情况下,委托(delegate)都是由扩展函数提供的,因为 ProjectSettings 都是 Gradle 核心 API 的 Java 文件部分。

我希望这能回答您的问题。

关于kotlin - 构建.gradle.kts :10:28: Unresolved reference: settings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62110152/

相关文章:

intellij-idea - Kotlin 多平台 - "Error: Could not find or load main class MainKt"

java - getActionView 已弃用?

android - Kotlin 注解参数必须是编译时常量

Gradle kotlin如何调用父级中定义的函数?

Gradle子项目条件插件配置与gradle kotlin dsl

android - 如何使用 Flows 处理数据库调用错误

android - 如果 MutableList 为空,如何更改 TextView 的可见性? (安卓/ Kotlin )

gradle - 如何通过Kotlin DSL将系统属性传递给Gradle测试

kotlin - Gradle的初学者问题

android - 你如何结合多种 gradle 口味或排除一种?