Gantコードのブロックがあるとします。
target(echo:"test"){
ant.echo(message:"hi")
}
setDefaultTarget("echo")
これは通常、コマンドラインから実行されます。
ブロックをGrailsコントローラーに配置し、そこから実行するにはどうすればよいですか?
これにはAntBuilderを使用できます。
class FooController {
def index = {
def ant = new AntBuilder()
ant.echo(message:"hi")
}
}
Gantコードを含むDynaScript_.groovyなどのGroovyスクリプトを作成し、このスクリプトファイルを{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"
}
}
スクリプト名がアンダースコアで終わることが重要です。