创建一个任务,该任务使用参数执行另一个任务
Create a task that executes another task with arguments
如何创建一个任务来执行另一个带参数的任务?
taskB 将从命令行接收参数(这里它被硬编码为 val1 和 val2)我想将这些参数传递给其他任务 - 例如 taskA 和 taskC,并定义它们的顺序被执行。
这是我试过的方法,但没有用
task taskB(){
def val1 = '1'
def val2 = 'abc'
dependsOn "taskA -PparamA=$val1 -PparamB=$val2",
"taskC -PparamA=$val1 -PparamB=$val2"
taskC.mustRunAfter taskA
}
你可以这样做:
task taskA() << {
//properties are printed during the execution phase
println paramA
println paramB
}
task taskC() << {
//properties are printed during the execution phase
println paramA
println paramB
}
task taskB(){
def val1 = '1'
def val2 = 'abc'
//here you set task properties
taskA.ext.paramA=val1
taskA.ext.paramB=val2
//here you set task properties
taskC.ext.paramA=val1
taskC.ext.paramB=val2
//provide task depoendencies
dependsOn taskA, taskC
//and tasks order
taskC.mustRunAfter taskA
}
在那种情况下 ext
意味着,这个 属性 不是全局的,而仅由任务本身拥有。
上面示例的问题在于,taskB
传播的值仅在执行阶段在 taskA
和 taskC
中可用。如果在配置过程中需要它们,可以将它们作为项目属性传递,例如:
task taskB(){
def val1 = '1'
def val2 = 'abc'
//here you set project properties
project.ext.paramA=val1
project.ext.paramB=val2
}
task taskA() {
//properties are printed during the configuration phase
println project.ext.paramA
println project.ext.paramB
}
task taskC() << {
//properties are printed during the execution phase
println project.ext.paramA
println project.ext.paramB
}
//provide task depoendencies
taskB.dependsOn taskA, taskC
//and tasks order
taskC.mustRunAfter taskA
如何创建一个任务来执行另一个带参数的任务?
taskB 将从命令行接收参数(这里它被硬编码为 val1 和 val2)我想将这些参数传递给其他任务 - 例如 taskA 和 taskC,并定义它们的顺序被执行。
这是我试过的方法,但没有用
task taskB(){
def val1 = '1'
def val2 = 'abc'
dependsOn "taskA -PparamA=$val1 -PparamB=$val2",
"taskC -PparamA=$val1 -PparamB=$val2"
taskC.mustRunAfter taskA
}
你可以这样做:
task taskA() << {
//properties are printed during the execution phase
println paramA
println paramB
}
task taskC() << {
//properties are printed during the execution phase
println paramA
println paramB
}
task taskB(){
def val1 = '1'
def val2 = 'abc'
//here you set task properties
taskA.ext.paramA=val1
taskA.ext.paramB=val2
//here you set task properties
taskC.ext.paramA=val1
taskC.ext.paramB=val2
//provide task depoendencies
dependsOn taskA, taskC
//and tasks order
taskC.mustRunAfter taskA
}
在那种情况下 ext
意味着,这个 属性 不是全局的,而仅由任务本身拥有。
上面示例的问题在于,taskB
传播的值仅在执行阶段在 taskA
和 taskC
中可用。如果在配置过程中需要它们,可以将它们作为项目属性传递,例如:
task taskB(){
def val1 = '1'
def val2 = 'abc'
//here you set project properties
project.ext.paramA=val1
project.ext.paramB=val2
}
task taskA() {
//properties are printed during the configuration phase
println project.ext.paramA
println project.ext.paramB
}
task taskC() << {
//properties are printed during the execution phase
println project.ext.paramA
println project.ext.paramB
}
//provide task depoendencies
taskB.dependsOn taskA, taskC
//and tasks order
taskC.mustRunAfter taskA