在Gradle中,我们可以定义和访问如下变量吗?在范围(命名空间)中定义变量的更方便的方法。
GROUP BY Key1,Key2
或者需要地图
foo {
bar1 {
variable1 = 'hello';
variable2 = 'hello2';
}
bar2 {
variable1 = 'hello';
variable2 = 'hello2';
}
}
println foo.bar1.variable1
println foo.bar2.variable2
答案 0 :(得分:2)
您应该使用ConfigSlurper
在foo.groovy
foo {
bar1 {
variable1 = 'hello'
variable2 = 'hello2'
}
bar2 {
variable1 = 'hello'
variable2 = 'hello2'
}
}
然后加载
ConfigSlurper foo = new ConfigSlurper().parse(new File('/path/to/foo.groovy').toURI().toURL())
println foo.bar1.variable1
println foo.bar2.variable2
答案 1 :(得分:1)
我通常看到它完成的方式是在单独的脚本中使用ext
块
即gradle/common.gradle
:
ext {
foo = [
bar1: [
variable1 : 'hello',
variable2 : 'hello2'
],
bar2: [
variable1 : 'hello',
variable2 : 'hello2'
]
]
}
然后在您的构建脚本中;
applyScript 'common.gradle'
答案 2 :(得分:0)
如果您想在local
global
中达到gradle
和tasks
的范围,我们可以做类似的事情,
def version = "3.0"
task Task1 {
description "sample task #1"
doLast {
version = "1.0"
println "exec doLast - task 1"
println "since verison - $version"
}
}
task Task2 {
description "sample task #2"
doLast {
version = "1.0"
println "exec doLast - task 2"
println "since verison - $version"
}
}
task Task3 {
description "sample task #3"
dependsOn Task1
doLast {
version = "2.0"
println "exec doLast - task 3"
println "since verison - $version"
}
}
task Task4 {
description "sample task #4"
dependsOn Task3, Task2
doLast {
println "exec doLast - task 4"
println "since verison - $version"
}
}
这将创建一个全局变量version
,然后每个任务都会根据用途创建一个局部变量version
。
工作:
由于局部变量是在doLast
中定义的,因此它们是在运行task
时创建的,而不是在gradle构建生命周期的configuration
步骤中创建的。