从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,它会正常工作并在控制台上打印。

请帮忙澄清以下问题

  1. 为什么当从 Controller 调用时我在控制台上看不到来自脚本的任何消息
  2. 我可以在脚本文件夹中的脚本中设置调试断点吗,因为它是一个异步调用。

.execute() returns Process 实例,具有访问输出、错误和状态代码的方法。

因此请回答“1”:因为您不会将命令的输出复制到您的控制台。请参阅文档:http://www.groovy-lang.org/groovy-dev-kit.html#process-management

对于“2”:您不能,因为您将脚本作为外部进程调用。如果你想评估 Groovy 脚本,而不是调用普通的外部命令,最好使用 GroovyScriptEngine