我有一个使用Kotlin DSL的Gradle 5.3构建脚本,类似于:
plugins {
`kotlin-dsl`
`java-library`
}
group = "my.company"
version = "1.2.3"
在这里,version=
解析为org.gradle.api.Project.setVersion
。
现在,更进一步,我想这样做(从Groovy DSL构建文件移植):
tasks.named<Jar>("jar") {
manifest {
attributes(
"Product-Version" to version
)
}
}
在这里,version
解析为AbstractArchiveTask.getVersion
-不是我想要的(也不推荐使用)!
弄清楚我可以使用Kotlin的qualified this
,我尝试使用
"${this@Project.version}"
相反(注意:多余的字符串包装消除了其他类型错误),但是我现在得到了Unresolved reference: @Project
。
如何从Kotlin DSL表达式中访问项目版本?
答案 0 :(得分:0)
Gradle脚本似乎没有嵌套在Project
内,而是将访问器委托给其相关属性。实际上,顶级this
的类型为Build_gradle
。
当这些访问器被遮盖时,可以使用变量project
;即
project.version
解决了当前的问题。或者,
this@Build_gradle.version
也是有效的,但可读性较差。