5.3 Re-using Grails scripts 3.1.7

See the light - agile, industrial strength, rapid web application development made easy

(Quick Reference) # 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.7 ## 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()
The above will invoke the `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 the `gradle` 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 the `generate-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
| Quick Reference (hide)