从gradle bruildscript中导出Setpup/export环境变量

从gradle bruildscript中导出Setpup/export环境变量,gradle,build.gradle,Gradle,Build.gradle,我有一个构建脚本,它有20个不同的任务。每个任务执行一些命令,每个任务需要一些环境变量。有些环境变量对于所有任务都是通用的,有些环境变量则不是。gradle中有没有一种方法可以在所有任务之上设置这些公共环境变量?或者将环境变量放在方法/任务中,并在需要这些环境变量的其他任务中调用它作为第一步 task task1 (type:Exec) { environment COMMON_ENV, VALUE1 commandLine 'touch', 'xyz100.txt' }

我有一个构建脚本,它有20个不同的任务。每个任务执行一些命令,每个任务需要一些环境变量。有些环境变量对于所有任务都是通用的,有些环境变量则不是。gradle中有没有一种方法可以在所有任务之上设置这些公共环境变量?或者将环境变量放在方法/任务中,并在需要这些环境变量的其他任务中调用它作为第一步

task task1 (type:Exec) {
      environment COMMON_ENV, VALUE1
      commandLine 'touch', 'xyz100.txt'
}

task task2 (type:Exec) {
      environment COMMON_ENV, VALUE1
      commandLine 'touch', 'xyz200.txt'
}
因此,在本例中,task1和task2都需要相同的环境变量COMMON_ENV。那么,我如何在一个公共位置定义它,而不是在每个任务中定义它呢

记住,它不是一个java项目

以下操作无法将env变量设置为所有任务

task setEnv(type: Exec) {
      environment COMMON_ENV, VALUE1
}
task task1 (type:Exec, dependsOn: setEnv) {
      commandLine 'touch', 'xyz100.txt'//this task does not know COMMON_ENV, though it 'dependsOn' setEnv task
}

可以为具有相同类型的所有任务设置一些公共属性,您只需另外配置它们,如下所示:

tasks.withType(Exec) {
    environment COMMON_ENV, VALUE1
}

task task1 (type:Exec) {
      commandLine 'touch', 'xyz100.txt'
}

task task2 (type:Exec) {
      commandLine 'touch', 'xyz200.txt'
}

注意,您可以添加
任务。使用type(Exec)
添加到
所有项目
子项目
闭包中,不仅可以配置当前项目,还可以配置所有项目或子项目(如果需要)。

可以为具有相同类型的所有任务设置一些公共属性,只需另外配置它们,就这样:

tasks.withType(Exec) {
    environment COMMON_ENV, VALUE1
}

task task1 (type:Exec) {
      commandLine 'touch', 'xyz100.txt'
}

task task2 (type:Exec) {
      commandLine 'touch', 'xyz200.txt'
}
注意,您可以将
任务。withType(Exec)
添加到
所有项目
子项目
闭包中,以便不仅配置当前项目,而且配置所有项目或子项目(如果需要)