如何将命令行参数传递给自定义Exec gradle任务?

如何将命令行参数传递给自定义Exec gradle任务?,gradle,Gradle,我试图将命令行参数传递给Gradle Exec任务。所以我想执行一个bash脚本并给它一个参数。但是,在没有参数的情况下执行脚本会非常流畅。打印时,只有带有@选项的参数本身给出了空值。我的代码如下 import org.gradle.api.tasks.options.Option; task buildSamples(type: SampleExecTask){ command() } class SampleExecTask extends Exec { priv

我试图将命令行参数传递给Gradle Exec任务。所以我想执行一个bash脚本并给它一个参数。但是,在没有参数的情况下执行脚本会非常流畅。打印时,只有带有
@选项的参数本身给出了空值。我的代码如下

import org.gradle.api.tasks.options.Option;


task buildSamples(type: SampleExecTask){
    command()   
}

class SampleExecTask extends Exec {
    private String argument;

    @Option(option = "argument", description = "An argument for the script")
    public void setSample(String argument) {
        this.argument = argument;
    }

    @Input
    public String getArgument() {
        return argument;
    }
    
    void command() {
        println(argument);
        commandLine 'sh', 'myBashScript.sh'
    }
}

有人知道为什么我的参数值为null而没有设置吗?
提前谢谢

它确实得到设置,但不是在您引用它的时候。Gradle中的大多数对象都是延迟评估的,并且在配置时不能保证完全配置

如果将
command()
放在
doFirst
块中,则它不应为空

但是,使用命令行选项中的额外参数扩充Exec任务的更正确方法可能是在setter中配置标准的
args
属性:

//Groovy DSL
任务构建示例(类型:SampleExecTask)
类SampleExecTask扩展了Exec{
@选项(Option=“argument”,description=“脚本的参数”)
public void setSample(字符串参数){
args(参数)
}
//可以在构造函数中设置基本配置
SampleExecTask(){
可执行文件('sh')
args('myBashScript.sh')
}
}