我有一个来自插件的任务,我在命令行上这样调用它:
$ gradle myTask -PsomeArg=<value>
我想定义另一个与默认参数值完全相同的任务。我希望能够这样称呼它:
$ gradle otherTask
我认为我的任务应如下所示:
task otherTask (dependsOn: 'myTask', someArg: 'value') {...}
最佳答案
您可以定义一个任务,当不将此参数作为命令行参数提供时,它将为项目属性someArg
设置默认值:
task otherTask (){
finalizedBy myTask
doFirst{
if (!project.hasProperty("someArg")) {
project.ext.set("someArg", "defaultValue")
}
}
}
请注意,您需要在此处使用
finalizedBy
依赖类型:如果您使用otherTask.dependsOn myTask
,则将首先执行myTask
任务(因此,尚未设置someArg
属性的默认值)执行结果:
./gradlew myTask -PsomeArg=myValue
> Task :myTask
executing task pluginTask with arg: myValue
./gradlew otherTask -PsomeArg=myValue
> Task :myTask
executing task pluginTask with arg: myValue
./gradlew otherTask
> Task :myTask
executing task pluginTask with arg: defaultValue