Groovy 是否有与Scala';什么是文字标识符?

Groovy 是否有与Scala';什么是文字标识符?,groovy,gradle,Groovy,Gradle,Scala的文字标识符如中所述 背景:我正在将Ant构建系统转换为Gradle。我们目前有一个文件dependencies.properties,其定义如下: com.netflix.archaius.archaius-core.rev=latest.release 但是Groovy不喜欢属性名中的和-(因为它们是运算符)。不是用属性来改变属性和所有的名称,而是有办法告诉Groovy考虑 .和 ->代码>作为属性名称中的另一个字符?< /p> 如下,在Scala中不提供文字标识符,但是它应该解

Scala的文字标识符如中所述

背景:我正在将Ant构建系统转换为Gradle。我们目前有一个文件
dependencies.properties
,其定义如下:

com.netflix.archaius.archaius-core.rev=latest.release

但是Groovy不喜欢属性名中的
-
(因为它们是运算符)。不是用属性来改变属性和所有的名称,而是有办法告诉Groovy考虑<代码> .<代码>和<代码> ->代码>作为属性名称中的另一个字符?< /p> 如下,在Scala中不提供文字标识符,但是它应该解决您的根问题。给定此dependencies.properties文件:

foo=bar
com.netflix.archaius.archaius-core.rev=latest.release
然后是这个Gradle脚本:

ant.property(file: "dependencies.properties")

task go() {
    println ant."com.netflix.archaius.archaius-core.rev"
    println ant.foo
    println "done."
}
输出为(为简洁起见进行了编辑):


你能帮忙吗?您可以在看到
-
的地方很好地使用GString实现。例如:
com.netflix.archaius.archaius.core.rev=${latest.release}
为什么不将属性文件解析为属性文件,并在必要时对结果映射进行一些简单的字符串替换?在我们的构建中,属性被放在
项目
范围内,因此
项目.com.netflix.archaius.archaius core.rev'
项目['''com.netflix.archaius.archaius core.rev']
起作用。
bash-3.2$ gradle go
latest.release
bar
done.

BUILD SUCCESSFUL

Total time: 4.26 secs