grails - 从grails应用程序启动grails命令

标签 grails groovy

我正在尝试从Grails应用程序中运行诸如“grails帮助”之类的grails命令,但是我所做的所有尝试都以“错误:找不到或加载主类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”命令不是我要执行的命令,但是修复此命令将修复我需要运行的命令。

还有其他想法吗?

最佳答案

如果我使用grails 2.3.5(grails create-app script-test)创建一个新应用,则声明一个 Controller (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,在服务器上)

我认为您需要重新考虑自己的策略,无论您打算做什么:-(

关于grails - 从grails应用程序启动grails命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21827704/

相关文章:

syntax - Groovy 语法解释/资源

testing - 如何测试Grails 3域类的映射

database - 使用Hibernate从Grails中的列查询数据库值

python - UnetSocket send() 返回一个 Nonetype 对象

grails - 如何在g :select?中将i18n与Grails/Groovy枚举一起使用

hibernate - 检查当前日期是否在开始日期和结束日期之间

java - Grails 是大型企业 Web 应用程序的可行选择吗?

java - 隐式类型转换?

grails - 由于 JNDI 查找,无法在 Grails 集成测试中初始化服务

java - 获取两天之间的差值(减法)