从grails应用程序启动grails命令

时间:2014-02-17 11:21:32

标签: grails groovy

我正在尝试从Grails应用程序运行grails命令,例如“grails help”,但我所做的所有尝试最终都是“错误:无法找到或加载主类org.codehaus.groovy.grails.cli。 support.GrailsS​​tarter”。

基本上,我试过

def p1 = "grails help".execute()
p1.waitFor()

println "return code: ${ p1.exitValue()}"
println "stderr: ${p1.err.text}"
println "stdout: ${p1.in.text}"

此外:

Runtime runtime = Runtime.getRuntime()
Process process = runtime.exec("grails help")
process.waitFor()

println "return code: ${ process.exitValue()}"
println "stderr: ${process.err.text}"
println "stdout: ${process.in.text}"

最后:

def sout = new StringBuffer()
def serr = new StringBuffer()
final processBuilder = new ProcessBuilder()
processBuilder.directory(new File("/myFolder"))
processBuilder.command(["grails","help"])
println processBuilder.directory()
Process proc = processBuilder.start()
proc.consumeProcessOutput(sout, serr)

def status = proc.waitFor()
println 'sout: ' + sout
println 'serr: ' + serr

当然,“grails help”命令不是我想要执行的命令,但修复此命令会修复我需要运行的命令。

还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

如果我使用grails 2.3.5(grails create-app script-test)创建一个新的应用程序,然后声明一个控制器(grails create-controller test.Run)并将其更改为如下所示:

package test

class RunController {
    def index() {
        def t = [ 'grails', 'help' ].execute().text
        render "<pre>$t</pre>"
    }
}

然后使用grails run-app运行它,然后转到localhost:8080/script-test/run,我将grails帮助屏幕呈现为文本到网页。

您将遇到的问题是,这在生产中不起作用,因为您可能要部署war文件,因此Grails不会知道您的位置或您的身份做(如果确实在服务器上安装了grails)

我认为你需要重新思考你的策略,无论你想做什么: - (