简体   繁体   中英

Not able to set command line arguments in gradle's JavaExec task

Not able to set command line arguments while configuring subprojects' task.

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

This error message is being showed:

What went wrong: A problem occurred evaluating root project 'MainProject'. No signature of method: java.util.HashSet.args() is applicable for argument types: (java.lang.String) values: [xyz] Possible solutions: any(), grep(), grep(), add(java.lang.Object), add(java.lang.Object), is(java.lang.Object)

The method Project.getTasksByName() returns a Set of Task instances. You will need to assign the field to each element in the Set .

task doStuff {
    doLast {
        Set<Task> executableTasks = project(':SubProject1').getTasksByName('run', true)
        executableTasks.each {
            it.args 'xyz'
        }
    }
}

BTW: I don't understand why you need to set arguments for a task in a different project. Couldn't you just set it in the subproject :SubProject1 that defines the task? I'd actually set the task properties within :SubProject1 with a configuration rule:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM