我有一个buildcript,有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
}
答案 0 :(得分:0)
可以为所有具有相同类型的任务设置一些公共属性,您只需要另外配置它们,就像这样:
tasks.withType(Exec) {
environment COMMON_ENV, VALUE1
}
task task1 (type:Exec) {
commandLine 'touch', 'xyz100.txt'
}
task task2 (type:Exec) {
commandLine 'touch', 'xyz200.txt'
}
注意,您可以将tasks.withType(Exec)
添加到allprojects
或subprojects
闭包中,不仅可以配置当前项目,还可以根据需要配置所有项目或子项目。