我已经编写了自己的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"
}由于我的gant脚本需要一些其他脚本,所以我得到的错误是“MyOwnScript_:includeTargets for class: MyOwnScript_”。
有谁知道让它正常工作的正确方法吗?
发布于 2014-02-17 13:55:50
回答我自己的问题。主要问题是,我需要使用完整的路径运行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-17 13:19:14
您是否尝试获取到脚本文件夹的路径并执行外部进程,如
["groovy", "scripts/MyOwnScript_.groovy", "param1", "param2"].execute()有关在groovy中运行外部进程的更多信息,请参见这里。
https://stackoverflow.com/questions/21785449
复制相似问题