5.3 Re-using Grails scripts - Reference Documentation
Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith, Lari Hotari
Version: 3.1.8
5.3 Re-using Grails scripts
Grails ships with a lot of command line functionality out of the box that you may find useful in your own scripts (See the command line reference in the reference guide for info on all the commands).Any script you create can invoke another Grails script simply by invoking a method:testApp()
test-app
command. You can also pass arguments using the method arguments:testApp('--debug-jvm')
Invoking Gradle
Instead of invoking another Grails CLI command you can invoke Gradle directory using thegradle
property.gradle.compileGroovy()
Invoking Ant
You can also invoke Ant tasks from scripts which can help if you need to writing code generation and automation tasks:ant.mkdir(dir:"path")
Template Generation
Plugins and applications that need to define template generation tasks can do so using scripts. A example of this is the Scaffolding plugin which defines thegenerate-all
and generate-controllers
commands.Every Grails script implements the TemplateRenderer interface which makes it trivial to render templates to the users project workspace.The following is an example of the create-script command written in Groovy:description( "Creates a Grails script" ) { usage "grails create-script [SCRIPT NAME]" argument name:'Script Name', description:"The name of the script to create" flag name:'force', description:"Whether to overwrite existing files" }def scriptName = args[0] def model = model(scriptName) def overwrite = flag('force') ? true : falserender template: template('artifacts/Script.groovy'), destination: file("src/main/scripts/${model.lowerCaseName}.groovy"), model: model, overwrite: overwrite