Как запустить цели Ганта из контроллера Grails?
Предположим, у меня есть блок кода Ганта:
target(echo:"test"){
ant.echo(message:"hi")
}
setDefaultTarget("echo")
Обычно это запускается из командной строки.
Как я могу поместить блок в контроллер Grails и запустить его оттуда?
2 ответа
Решение
Вы можете использовать AntBuilder для этого:
class FooController {
def index = {
def ant = new AntBuilder()
ant.echo(message:"hi")
}
}
Вы можете создать скрипт groovy, скажем DynaScript_.groovy, который содержит ваш код Gant, и поместить этот файл скрипта в папку {grailsHome}/scripts.
И тогда вы можете вызвать файл скрипта из вашего контроллера следующим образом:
class FooController {
def index = {
def process = "cmd /c grails dyna-script".execute()
def out = new StringBuilder()
process.waitForProcessOutput(out, new StringBuilder())
println "$out"
}
}
Важно, чтобы имя вашего скрипта заканчивалось подчеркиванием.