我試圖從Grails應用程序運行grails命令,如「grails help」,但我所做的所有嘗試都以「錯誤:無法找到或加載主類org.codehaus」爲由。 groovy.grails.cli.support.GrailsStarter」。從Grails應用程序啓動grails命令
基本上,我已經試過
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的幫助」 命令是不是我想要執行但修復這一個它將修復我需要運行的一個。
還有其他想法嗎?
但是,我們使用的環境變量GRAILS_HOME嗎?我發現的ProcessBuilder .command([env ['GRAILS_HOME'] +「/ bin/grails」,「help」])會製造詭計。你不認爲它會用於生產嗎?我還沒有測試過產品。 –
我使用'gvm'來安裝grails,所以我的路徑上有'grails' (並且'GRAILS_HOME'設置爲'/ Users/me/.gvm/grails/current'),所以它沒有任何改變。這取決於你如何部署到生產。我們將戰爭文件部署到不知道grails二進制文件的服務器上,所以對我們來說這不起作用 –
感謝@tim_yates的幫助! –