Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create standalone application with grails

Tags:

grails

I wonder if there is a tool which creates a demoable version of my grails projects. Something which I can distribute on a CD or USB stick which will run on every environment.

Something which

  • comes with one shell script to start the app
  • searches for a free server port on the system (no error message if 8080 is already in use)
  • starts a jetty server
  • starts the standard browser with my application

Does anybody know of such a tool?

like image 424
rdmueller Avatar asked Apr 29 '12 08:04

rdmueller


People also ask

How do I create a grails application?

Go to start.grails.org and use the Grails Application Forge to generate your Grails project. You can choose your project type (Application or Plugin), pick a version of Grails, and choose a Profile - then click "Generate Project" to download a ZIP file. No Grails installation necessary!

Is grails a spring boot?

Grails (more precisely it's latest major version) is a framework built on top of the Spring Boot project and uses the Apache Groovy language to develop web apps. It's inspired by the Rails Framework for Ruby and is built around the convention-over-configuration philosophy which allows reducing boilerplate code.

How is MVC implemented grails?

Grails MVC (Model / View / Controller) Pattern Grails follows a very popular pattern in web applications development, called Model – View – Controller. The pattern organizes the software in 3 layers: Model or data layer: contains all the components that represents and manage data stored in our application.


3 Answers

Check out the standalone plugin it makes it a lot easier to distribute a demo version of your Grails app.

"The Standalone plugin builds a runnable JAR file with an embedded war built from your application and an embedded Tomcat 7 instance. This allows you to build a single archive that can be run on any computer with Java 5 or higher by running java -jar standalone.jar. This can be convenient for demos or even very lightweight installs of low-traffic Grails applications."

Full docs for the standalone plugin are here

To prepare the jar file...

grails -Dgrails.env=demo build-standalone our_cool_demo.jar

To run the Grails app (the port is specified as a parameter)...

java -jar /path/to/jar_name.jar cool_demo localhost 9000


Update:

There are actually 2 Grails standalone plugins:

  1. The 'standalone' plugin described above which is based on Tomcat7
  2. The 'jetty-standalone' plugin which is based on Jetty and works in a similar way

There are also some options based on Hudson and the Winstone project but there isn't a Grails plugin. Here are some links with further information: Build executable war using grails, maven and jetty, Executable WARs with Jetty and Winstone

like image 179
Chris Avatar answered Nov 14 '22 08:11

Chris


Best thing that comes to mind is using a Linux distro on a USB stick with grails installed. You can export the application as a WAR file, then create a script containing grails prod run-war to execute on boot. Finally, you can open up firefox with firefox localhost:port#/AppName

The only downside with this option is you need to boot from the stick and that will create a bit of delay time. However, the advantages are that you only have to worry about supporting one OS, no port scanning on startup and simplicity.

like image 22
Jason Avatar answered Nov 14 '22 07:11

Jason


The answer proposed by Chris does not work for my, but it provided me a good starting point: It seems that it isn't too hard to create such a standalone app:

  • jetty is a good starting point: just drop the jetty files on a USB stick and deploy your grails app by dropping the .war file in the webapps directory of jetty
  • create a small groovy script which searches for two (!) free ports. You'll need the second to stop the server again
  • the groovy script can start and stop the server
  • compile the script in order to avoid having to install groovy on the target machine

that's it. I guess I'll post more details when I find some more time...

like image 1
rdmueller Avatar answered Nov 14 '22 09:11

rdmueller