我想在guild.gradle.kts
文件中定义一个版本常量,以便甚至可以在plugins
块中使用它。该plugins
块要求使用受限语法:
«plugin version»
必须是常量,文字,字符串
遵循限制,我尝试定义一个版本常量:
const val kotlinVersion = "1.3.72"
plugins {
java
kotlin("jvm") version kotlinVersion
}
但是,这失败并显示消息
Const 'val' are only allowed on top level or in objects
即使该声明似乎满足所有const要求。为什么不能const val
在build.gradle.kts中使用?
即使您的构建脚本似乎是顶级的,也并非如此。gradle文档在解释构建的生命周期时提到了这一点:
最后,
Project
通过build.gradle
针对项目执行其文件(如果存在)来评估每个文件。
(源)这意味着在您的kotlin构建脚本中,接收者类型(即this
)KotlinBuildScript
最终是的子类Project
。我不知道有关如何评估的详细信息,但是我可以想象,这将等同于您在Kotlin中使用接收器类型执行的操作:
fun Project.evaluate(buildScript: Project.() -> Unit) = this.evaluate()
因此,您的构建脚本实际上只是一个闭包的内部,因此您不能使用const val
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句