从grails控制器调用脚本文件夹下的脚本
Invoke script under scripts folder from grails controller
在我的 Grails 应用程序中,我试图从控制器调用脚本文件夹下的脚本
控制器代码
def invokeScript(){
def bg= ["groovy","scripts/masterScript.groovy", request.JSON]
bg.execute();
render("Script Invoked")
}
masterScript.groovy
println("Master Script Invoked with arguements " + args[0]);
预期输出
在控制台上:"Master Script Invoked with arguements "
响应:已调用脚本
实际输出
控制台上未打印任何消息,但响应准确"Script Invoked"
如果我从命令提示符下显式调用 masterScript,它会正常工作并在控制台上打印。
请帮忙澄清以下问题
- 为什么当从 Controller 调用时我在控制台上看不到来自脚本的任何消息
- 我可以在脚本文件夹中的脚本中设置调试断点吗,因为它是一个异步调用。
.execute()
returns Process 实例,具有访问输出、错误和状态代码的方法。
因此请回答“1”:因为您不会将命令的输出复制到您的控制台。请参阅文档:http://www.groovy-lang.org/groovy-dev-kit.html#process-management
对于“2”:您不能,因为您将脚本作为外部进程调用。如果你想评估 Groovy 脚本,而不是调用普通的外部命令,最好使用 GroovyScriptEngine
在我的 Grails 应用程序中,我试图从控制器调用脚本文件夹下的脚本
控制器代码
def invokeScript(){
def bg= ["groovy","scripts/masterScript.groovy", request.JSON]
bg.execute();
render("Script Invoked")
}
masterScript.groovy
println("Master Script Invoked with arguements " + args[0]);
预期输出
在控制台上:"Master Script Invoked with arguements " 响应:已调用脚本
实际输出
控制台上未打印任何消息,但响应准确"Script Invoked"
如果我从命令提示符下显式调用 masterScript,它会正常工作并在控制台上打印。
请帮忙澄清以下问题
- 为什么当从 Controller 调用时我在控制台上看不到来自脚本的任何消息
- 我可以在脚本文件夹中的脚本中设置调试断点吗,因为它是一个异步调用。
.execute()
returns Process 实例,具有访问输出、错误和状态代码的方法。
因此请回答“1”:因为您不会将命令的输出复制到您的控制台。请参阅文档:http://www.groovy-lang.org/groovy-dev-kit.html#process-management
对于“2”:您不能,因为您将脚本作为外部进程调用。如果你想评估 Groovy 脚本,而不是调用普通的外部命令,最好使用 GroovyScriptEngine