【问题标题】:Not able to set command line arguments in gradle's JavaExec task无法在 gradle 的 JavaExec 任务中设置命令行参数
【发布时间】:2016-11-07 08:40:57
【问题描述】:

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

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)

【问题讨论】:

    标签: java gradle


    【解决方案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' }
    

    【讨论】:

    • 我不想获取字段值,我想更新它们。我已经能够成功获取价值了。
    • 更新了代码。顺便说一句:Task API 上没有方法 args
    • 仍然无法设置值,您能提供一个工作示例
    • 我更新了示例。忽略我之前的评论。我没有意识到这个任务的类型是JavaExec
    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2022-10-25
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多