Build war files
gradle -Dgrails.env=dev assemble
gradle -Dgrails.env=prod assemble
If custom environment is setup in yml file
gradle -Dgrails.env=staging assemble
gradle -Dgrails.env=preproduction assemble
Running app locally
./grailsw run-app
./grailsw -Dgrails.env=staging run-app
./grailsw -Dgrails.env=preproduction run-app
or running app locally with gradle
./gradlew bootRun
./gradlew -Dgrails.env=staging bootRun
Run specific commends grails with gradle
./gradlew runCommand -Pargs="generate-all com.micompany.MyStaff"
./gradlew runCommand -Pargs="create-domain-class com.micompany.MyStaff"
./grailsw create-domain-class com.micompany.Products
Upgrade wrapper
./grailsw update-wrapper
Other gradle commands.
./gradlew tasks
./gradlew publishToMavenLocal
See example running in index.gsp
TODO Print Mem Info
Also read Application name
${grails.util.Metadata.current.getApplicationName()}
Application Version
${grails.util.Metadata.current.getApplicationVersion()}
Environment name
${grails.util.Environment.current.name}
This has been deprecated in Gradle 8
${grailsApplication.config.myEnvironmentVariables}
Use this instead
grailsApplication.config.get("myEnvironmentVariables")
Java version
${System.getProperty('java.version')}
Groovy version
${GroovySystem.getVersion()}
Grails version
${grailsApplication.metadata.getGrailsVersion()}
Also see Grails config
See application.yml
same global variables are used in all running environment.
myGlobalVariables:
username: 'adminu'
password: 'adminp'
other: 'somethingelse'
class BootStrap {
def grailsApplication // inject
def init = { servletContext ->
//Global Variables
def username = grailsApplication.config.myGlobalVariables.username
username = grailsApplication.config.get("myGlobalVariables.username")
username = grailsApplication.config.myGlobalVariables.get("username")
}
}
Variable that are dependent on running environment. As example shows Groovy can get proper variable data type.
environments:
development:
myEnvironmentVariables: 'This is Dev variable'
tomcatDirectoryPath: '/opt/stage_tomcat/'
testMode: true //For development runs as test
fileAge: 30 //different for each environment
class BootStrap {
def grailsApplication // inject
def init = { servletContext ->
// Environment variables
def myEnvironmentVariables = grailsApplication.config.get("myEnvironmentVariables")
boolean testmode = grailsApplication.config.get("testMode")
int fileage = grailsApplication.config.get("fileAge")
}
}
In GSP files get values from yml file. See file /view/index.gsp.
${grailsApplication.config.tomcatDirectoryPath}
Running environment log level can be changed
development:
logging.level.com.arjang: INFO
Server port and context for each environment can be set.
environments:
development:
server:
port: 8081
servlet:
context-path: '/example1'
See Example2 for DataSources
- Add following to UrlMappings.goovy
"/buildinfo"(view: "/buildinfo")
- Add file buildinfo.gsp to /views/ directory
- Add jquery-3.7.1.min.js to /assets/javascripts/
- Add following to gsp page
<asset:javascript src="jquery-3.7.1.min.js"/>
- Add a JS function in < header > to load the file
<script>
$(function () {
$("#buildinfocontent").load("buildinfo")
});
</script>
- Add < div > to include content of the file.
<div id="buildinfocontent"></div>