build.gradle.kts中Unresolved reference: projectShortName错误求助
问题原因
错误源于两处问题:
ext块内定义的projectShortName是局部变量,application块无法访问该变量- 即便能访问,用
"$projectShortName"作为键获取ext属性的写法完全错误——ext中的属性是作为项目扩展属性存在,并非以变量名作为字符串键存储
解决方法
提供三种可行的修正方案:
方案一:使用脚本顶层变量(推荐)
将projectShortName定义为构建脚本的顶层变量,让所有代码块都能直接访问:
plugins { application id("org.jetbrains.kotlin.jvm") version "1.9.21" } repositories { mavenCentral() } // 定义为脚本顶层变量 val projectShortName = "My Project short name" application { applicationName = projectShortName }
方案二:正确使用Gradle扩展属性
如果必须用ext存储属性,需采用标准的定义和访问方式:
plugins { application id("org.jetbrains.kotlin.jvm") version "1.9.21" } repositories { mavenCentral() } ext { // 用set方法定义扩展属性 set("projectShortName", "My Project short name") } application { // 通过extra获取属性并转换类型 applicationName = project.extra["projectShortName"].toString() // 更简洁的写法: // applicationName = extra["projectShortName"] as String }
方案三:类型安全的扩展属性(Gradle 6.0+)
通过自定义扩展属性实现类型安全访问:
// 先定义类型安全的扩展属性委托 val Project.projectShortName: String get() = extra["projectShortName"] as String plugins { application id("org.jetbrains.kotlin.jvm") version "1.9.21" } repositories { mavenCentral() } ext { set("projectShortName", "My Project short name") } application { applicationName = projectShortName }
内容的提问来源于stack exchange,提问作者Alexei
相关产品推荐
相关产品推荐

