在gradle中,我们可以按以下方式定义和访问变量吗?一种更方便的方法来定义范围内变量(名称空间(。
foo {
bar1 {
variable1 = 'hello';
variable2 = 'hello2';
}
bar2 {
variable1 = 'hello';
variable2 = 'hello2';
}
}
println foo.bar1.variable1
println foo.bar2.variable2
或需要地图
foo = [bar1 : [variable1 : 'hello',
variable2 : 'hello2'
],
bar2 : [variable1 : 'hello',
variable2 : 'hello2'
]
]
您应该使用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
我通常看到的方式是在单独的脚本中使用ext
块
ie,在gradle/common.gradle
中:
ext {
foo = [
bar1: [
variable1 : 'hello',
variable2 : 'hello2'
],
bar2: [
variable1 : 'hello',
variable2 : 'hello2'
]
]
}
然后在您的构建脚本中;
applyScript 'common.gradle'
如果要实现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
时创建的,而不是在configuration
Gradle构建生命周期的步骤中创建的。