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

如何在Gradle中获得原始运行任务的精确副本?,gradle,gradle-kotlin-dsl,Gradle,Gradle Kotlin Dsl,有人知道注册几个运行任务的最简单方法是什么吗?这些任务表示原始任务的精确副本,并带有已更改的应用程序参数?或者可能是如何为运行任务提供表示应用程序参数的可选参数。 基本上,我希望我的构建包含一些预定义的选项如何运行应用程序,并且不希望声明新的JavaExec,它需要手动配置,而我已经默认提供了准备运行任务 gradle run --args='--mode=middle' ---> gradle run || gradle runDefault || gradle run def

有人知道注册几个运行任务的最简单方法是什么吗?这些任务表示原始任务的精确副本,并带有已更改的应用程序参数?或者可能是如何为运行任务提供表示应用程序参数的可选参数。 基本上,我希望我的构建包含一些预定义的选项如何运行应用程序,并且不希望声明新的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

到目前为止,我只提出了一个选项,建议使用提供的arguments属性实现我自己的JavaExec_自定义任务类。对于我的目标来说,它似乎过于复杂和陈词滥调。

您可以创建任务,在
doFirst
doLast
闭包中修改实际运行的
任务的配置:

// 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'


非常感谢。这正是我想要的!