你能在 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'。那你就不会有这个问题了。 我建议您创建另一个相同类型的任务并将其绑定到它的参数。