Я пытаюсь запустить команду grails, как «grails help» из приложения Grails, но все попытки, которые я сделал, заканчиваются «Ошибка: не удалось найти или загрузить основной класс 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"]) сделает трюк. Разве вы не думаете, что он будет работать над производством? Я еще не тестировался в prod. –
Я использую 'gvm' для установки grails, и поэтому на моем пути есть« grails » (и 'GRAILS_HOME' установлен в'/Users/me/.gvm/grails/current'), поэтому он работает без каких-либо изменений. Это зависит от того, как вы развертываете производство. Мы разворачиваем военные файлы на сервер, не зная о бинарных файлах Grails, поэтому для нас это не сработает –
Спасибо @tim_yates за вашу помощь! –