BCS Generate Grails App Shell Script

The command line is a horrible place to assigned to in order to accomplish an assigned task.

The shell script below builds a fully functional web site with a MYSQL backed.  The script has been commented so you can easily follow the scrips flow.

#!/bin/sh
#
#  Perform Houskeeping Tasks
#
defpath=/root
hpath=/home/bcs/grails
famid=tc02
#
#  Establish Home Path
#
cd $hpath/
#
#  Greate Grails App Base
#
grails create-app $famid
#
#  witch over the newly created stack
#
cd $hpath/$famid/
#
#  Copy BuildConfig and DatSource file to new stack
#
cp -f $defpath/DataSource.groovy  -t $hpath/$famid/grails-app/conf 
cp -f $defpath/BuildConfig.groovy -t $hpath/$famid/grails-app/conf 
#
#  Create Domains
#
grails create-domain-class amec.Bishops
grails create-domain-class amec.PresidingElders
grails create-domain-class amec.Churches
grails create-domain-class amec.Clergy
grails create-domain-class amec.Members
grails create-domain-class amec.Officers
#
# Copy finilized domains to new trails stack
#
cp -f $defpath/amec/Bishops.groovy -t $hpath/$famid/grails-app/domain/amec 
cp -f $defpath/amec/PresidingElders.groovy -t $hpath/$famid/grails-app/domain/amec 
cp -f $defpath/amec/Churches.groovy -t $hpath/$famid/grails-app/domain/amec 
cp -f $defpath/amec/Clergy.groovy -t $hpath/$famid/grails-app/domain/amec 
cp -f $defpath/amec/Members.groovy -t $hpath/$famid/grails-app/domain/amec 
cp -f $defpath/amec/Officers.groovy -t $hpath/$famid/grails-app/domain/amec 
#
# Generate Scaffolds for data manipulation
#
grails generate-all amec.Bishops
grails generate-all amec.PresidingElders
grails generate-all amec.Churches
grails generate-all amec.Clergy
grails generate-all amec.Officers
grails generate-all amec.Members
#
# Build War (Web Archive) file
#
grails war
pwd

When this script completes the WAR (web archive) file is ready to be deployed to the application server. Deploy the application and welcome your users.

Mr. Arch Brooks, Software Engineer, Brooks Computing Systems, LLC authored this article.

BCS Grails On Headless Ubuntu Server

I have an LAMP (Linux, Apache, MySQL and PHP) Ubuntu stack functioning as version 14.04 headless server. To support Grails I have installed JDK (Java Development Kit) 8, Tomcat 8 (application server for Grails)  and a recent version of MYSQL. Below is the Grails BuildConfig.groovy that depicts the minimal options to support the defined environment.

I used Gvm (Groovy Manager) to install the latest version of Grails 2.4.4 and I am satisfied with the install and the results it produces.

grails.servlet.version = "3.0" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.work.dir = "target/work"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"
 
grails.project.fork = [
    // configure settings for compilation JVM, note that if you alter the Groovy version forked compilation is required
    //  compile: [maxMemory: 256, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
 
    // configure settings for the test-app JVM, uses the daemon by default
    test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
    // configure settings for the run-app JVM
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the run-war JVM
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    // configure settings for the Console UI JVM
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]
 
grails.project.dependency.resolver = "maven" // or ivy
grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // specify dependency exclusions here; for example, uncomment this to disable ehcache:
        // excludes 'ehcache'
    }
    log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    checksums true // Whether to verify checksums on resolve
    legacyResolve false // whether to do a secondary resolve on plugin installation, not advised and here for backwards compatibility
 
    repositories {
        inherits true // Whether to inherit repository definitions from plugins
 
        grailsPlugins()
        grailsHome()
        mavenLocal()
        grailsCentral()
        mavenCentral()
        // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }
 
    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
        runtime 'mysql:mysql-connector-java:5.1.34'
        // runtime 'org.postgresql:postgresql:9.3-1101-jdbc41'
        test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4"
    }
 
    plugins {
        // plugins for the build system only
        build ":tomcat:8.0.20"
 
        // plugins for the compile step
        compile ":scaffolding:2.1.2"
        compile ':cache:1.1.8'
        compile ":asset-pipeline:1.9.9"
 
        // plugins needed at runtime but not for compilation
        runtime ":hibernate4:4.3.6.1" // or ":hibernate:3.6.10.18"
        runtime ":database-migration:1.4.0"
        runtime ":jquery:1.11.1"
 
        // Uncomment these to enable additional asset-pipeline capabilities
        //compile ":sass-asset-pipeline:1.9.0"
        //compile ":less-asset-pipeline:1.10.0"
        //compile ":coffee-asset-pipeline:1.8.0"
        //compile ":handlebars-asset-pipeline:1.3.0.3"
    }
}

Particularly notice the run time  MYSQL Java connector 5.1.34.  Many problems are eliminated by using the most up to date version of the tools available to build the stack.

Second notice the plugin for Tomcat has been updated to use the  8.0.20 version of the Tomcat plugin.  This coincides with the Tomcat server version 8 as configured on the Ubuntu LAMP server.

Care should be taken to make sure the proper versions are being utilized before deployment of your application.

Mr. Arch Brooks, Software Engineer, Brooks Computing Systems, LLC authored this article.