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