将命令行参数传递给运行任务

Tra*_*vis 7 gradle

/sf/answers/1658278751/

我开始使用上述答案提出的解决方案中的一些信息:应用程序插件方法

(的build.gradle)

 apply plugin: 'application'

 mainClassName = "com.mycompany.MyMain"
 run { 
    /* Need to split the space-delimited value in the exec.args */
   args System.getProperty("exec.args").split()    
}
Run Code Online (Sandbox Code Playgroud)

命令行:

gradle run -Dexec.args="arg1 arg2 arg3"
Run Code Online (Sandbox Code Playgroud)

它的预期用途很好,但似乎有副作用.传递命令行参数以进行运行是有意义的,但我必须为每个任务传递它们,例如:

gradle tasks -Dexec.args="arg1 arg2 arg3"
Run Code Online (Sandbox Code Playgroud)

如果我遗漏了

-Dexec.args="arg1 arg2 arg3"
Run Code Online (Sandbox Code Playgroud)

我明白了

"build failed with an exception"
Where:path\build.gradle line:18 which if where my run{ } is.
Run Code Online (Sandbox Code Playgroud)

Opa*_*pal 5

您可以通过两种不同的方式解决它:

第一:

exec.args属性可以直接在主类中读取 - 因此根本不需要argsrun闭包中进行配置.

第二:

只是如果它:

execArgs = System.getProperty('exec.args') 
if(execArgs)    
   args = execArgs.split()
Run Code Online (Sandbox Code Playgroud)

由问题Asker编辑:使用if工作,但我不得不稍微改变语法.

if(System.getProperty("exec.args") != null) {
    args System.getProperty("exec.args").split()
}
Run Code Online (Sandbox Code Playgroud)