你能在 gradle 中使用不同的系统参数多次 运行 一个任务吗?
Can you run a task multiple times with different system parameters in gradle?
所以我有一个项目,我想多次 运行 一个任务,每次都使用不同的系统参数值,但是我似乎做不到调用 gradle 在 bash 脚本中多次,这是不可取的。我尝试了 ./gradlew myTask -Dproperty="value1" myTask -Dproperty="value2"
which 运行 myTask 两次,这很好,但是两次都是 运行 和 property=value2
。有什么办法吗?
编辑:我还应该提到,直到构建时我才知道 value1 和 value2。所以我无法将它们硬核化到构建脚本中。
查看以下方法:
task executeTaskTwiceWithParameters {
String[] propertyValues = System.getProperty("propertyValues" ,"").split(",")
dependsOn propertyValues.collect { "runWith$it" }
propertyValues.each { value ->
task "runWith$value"(type: GradleBuild) {
buildFile = 'build.gradle'
tasks = ['doSomething']
startParameter.systemPropertiesArgs += [property: value]
}
}
}
task doSomething {
doLast {
println System.getProperty("property")
}
}
像
这样调用时
./gradlew executeTaskTwiceWithParameters -DpropertyValues=value1,value2
对于每个 属性 值,它会启动一个辅助 gradle 构建来执行带有此 属性 值集的任务。同样的技巧也适用于项目属性。
它将帮助您将任务视为 'instance' 而不是 'type'。那你就不会有这个问题了。
我建议您创建另一个相同类型的任务并将其绑定到它的参数。
所以我有一个项目,我想多次 运行 一个任务,每次都使用不同的系统参数值,但是我似乎做不到调用 gradle 在 bash 脚本中多次,这是不可取的。我尝试了 ./gradlew myTask -Dproperty="value1" myTask -Dproperty="value2"
which 运行 myTask 两次,这很好,但是两次都是 运行 和 property=value2
。有什么办法吗?
编辑:我还应该提到,直到构建时我才知道 value1 和 value2。所以我无法将它们硬核化到构建脚本中。
查看以下方法:
task executeTaskTwiceWithParameters {
String[] propertyValues = System.getProperty("propertyValues" ,"").split(",")
dependsOn propertyValues.collect { "runWith$it" }
propertyValues.each { value ->
task "runWith$value"(type: GradleBuild) {
buildFile = 'build.gradle'
tasks = ['doSomething']
startParameter.systemPropertiesArgs += [property: value]
}
}
}
task doSomething {
doLast {
println System.getProperty("property")
}
}
像
这样调用时./gradlew executeTaskTwiceWithParameters -DpropertyValues=value1,value2
对于每个 属性 值,它会启动一个辅助 gradle 构建来执行带有此 属性 值集的任务。同样的技巧也适用于项目属性。
它将帮助您将任务视为 'instance' 而不是 'type'。那你就不会有这个问题了。 我建议您创建另一个相同类型的任务并将其绑定到它的参数。