无法在gradle的JavaExec任务中设置命令行参数

时间:2016-07-05 13:23:46

标签: java gradle

配置子项目时无法设置命令行参数'任务。

task doStuff {
    def executable_task = project(':SubProject1').getTasksByName('run',true)
    println executable_task.name
    println executable_task.args
    executable_task.args('xyz')
}

正在显示此错误消息:

  

出了什么问题:   评估根项目' MainProject'时出现问题。   没有方法签名:java.util.HashSet.args()适用于参数类型:(java.lang.String)值:[xyz]     可能的解决方案:any(),grep(),grep(),add(java.lang.Object),add(java.lang.Object),is(java.lang.Object)

1 个答案:

答案 0 :(得分:-1)

方法Project.getTasksByName()会返回SetTask个实例。您需要将字段分配给Set

中的每个元素
task doStuff {
    doLast {
        Set<Task> executableTasks = project(':SubProject1').getTasksByName('run', true)
        executableTasks.each {
            it.args 'xyz'
        }
    }
}
顺便说一句:我不明白为什么你需要为不同项目中的任务设置参数。你不能在定义任务的子项目:SubProject1中设置它吗?我实际上使用配置规则在:SubProject1内设置了任务属性:

tasks.withType(JavaExec).matching { it.name == 'run' }.each { it.args 'xyz' }