2

我编写了自己的 gant 脚本,可以在命令行中正常工作。现在我需要从这样的 grails 项目中运行这个脚本:

def outputMessage

try{

    GroovyScriptEngine engine = new GroovyScriptEngine("/www", this.getClass().getClassLoader());
    engine.run("scripts/MyOwnScript_.groovy", "param1 param2")
    outputMessage = "<br> OK: Script run successfully"
}
catch (Exception e) {
    outputMessage += "<br> ERROR: There has been running the script"
}

我得到的错误是“没有这样的属性:类的 includeTargets:MyOwnScript_”,因为我的 gant 脚本需要一些其他脚本。

有人知道让它工作的正确方法吗?

4

2 回答 2

0

您是否尝试过获取脚本文件夹的路径并执行外部进程,例如

["groovy", "scripts/MyOwnScript_.groovy", "param1", "param2"].execute()

有关在 groovy 中运行外部进程的更多信息,请参见此处

于 2014-02-17T13:19:14.427 回答
0

回答我自己的问题。主要问题是我需要使用完整路径运行 grails,如下所示:

Map<String, String> env = System.getenv()
final processBuilder = new ProcessBuilder()
processBuilder.directory(new File("folderFromWhereIWantToRunTheGantScript"))
processBuilder.command([env['GRAILS_HOME']+"/bin/grails","MyOwnScript param1 param2"])
println processBuilder.directory()
Process proc = processBuilder.start()
proc.consumeProcessOutput(out, err)

proc.waitFor()
于 2014-02-17T13:55:50.827 回答