gradle:定义范围内的变量



在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&globalgradle 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构建生命周期的步骤中创建的。

最新更新