Выполнение скрипта Ганта из проекта Grails
Я написал свой собственный скрипт Ганта, который отлично работает из командной строки. Теперь мне нужно запустить этот скрипт из проекта 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"
}
Я получаю сообщение об ошибке: "Нет такого свойства: includeTargets для класса: MyOwnScript_", так как мой сценарий Gant требует некоторых других сценариев.
Кто-нибудь знает правильный способ заставить его работать?
2 ответа
Решение
Отвечая на мой собственный вопрос. Основная проблема заключалась в том, что мне нужно запустить 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()
Вы пытались получить путь к папке скриптов и выполнить внешний процесс, такой как
["groovy", "scripts/MyOwnScript_.groovy", "param1", "param2"].execute()
Смотрите здесь для получения дополнительной информации о запуске внешнего процесса в Groovy