如何在 Gradle 中获取原始 运行 任务的精确副本?

How to get the exact copy of original Run task in Gradle?

有谁知道注册几个 运行 任务的最简单方法是什么,这些任务表示原始任务的精确副本,但应用程序的参数已更改?或者可能是如何为 运行 任务提供一个代表应用程序参数的可选参数。 基本上,我希望我的构建包含一些预定义的选项如何 运行 一个应用程序并且不想声明需要手动配置的新 JavaExec 而我已经准备好了 运行 默认提供的任务。

gradle run --args='--mode=middle'      ---> gradle run || gradle runDefault || gradle run default
gradle run --args='--mode=greed'       ---> gradle runGreed || gradle run greed
gradle run --args='--mode=lavish'      ---> gradle runLavish || gradle run lavish

至于现在,我只想到了建议使用提供的参数 属性 实现我自己的 JavaExec_Custom 任务 class 的选项。就我的目标而言,它似乎过于复杂和千篇一律。

您可以在 doFirstdoLast 闭包中创建修改实际 run 任务配置的任务:

// Groovy-DSL

task runGreed {
    doFirst {
        run.args '--mode=greed'
    }
    finalizedBy run
}


// Kotlin-DSL

register("runGreed") {
    doFirst {
        run.get().args = listOf("--mode=greed")
    }
    finalizedBy(run)
}

您可以使用 属性 作为参数

task run(type: JavaExec) {
   args property('run.args').split(' ')
   ...
} 

用法

gradle run -Prun.args='foo bar baz'