Course Outline

Basics and Installation

  1. Introduction to Grails
  2. Installing a Windows Development Environment
  3. Installing an OS X Development Environment
  4. Installing a Linux Development Environment

Project Tracker – First Stack

  1. Application Setup
  2. Creating a Controller
  3. Creating a View
  4. Creating a Model

Project Tracker – Building the Application

  1. Designing the Data Model
  2. Dynamic Scaffolding
  3. Constraints and Static Scaffolding
  4. Basic Security
  5. Deploying Your Application to AppFog


  1. What is Groovy?



83 thoughts on “Course Outline

  1. Thanks a lot for these informative videos. I am new to grails and was tired searching some basic tutorials to start. Your videos were very helpful as starter

  2. Thanks a lot Mike.
    This really helps me a lot.
    Can’t thank you enough for these awesome videos.


  3. Hi Mike, am Really Thank full to you. i didn’t find any stuff like tutorials and so…
    but unfortunately on my luck i found your Video and it helped me a lot to develop a UI for our Project. Sharing Knowledge is a great thing i appreciate you.

  4. Mike,

    Thanks for all of the great content. Did I understand correctly that you’re not going to continue the grails academy from the May issue? Its been a great contribution and I love your teaching style. The pace and chunk of content is some of the best I’ve seen. Great job!

  5. First of all, thank you very much for all these tutorials, they seem very step by step/easy to understand.

    But I have a problem:
    I have installed: GGTS 3.4 and GRAILS 2.3.5 (with GVM); when I create a New Grails Project there is an error about the Groovy Compiler being 2.0 and the expected is 2.1.

    With Right Click on the Project, then Groovy Compiler, Groovy Compiler Level for project X: there are only the 1.8 and 2.0 version.

    Anyone knows what can I do?

    The error:
    Description Resource Path Location Type
    Groovy: compiler mismatch Project level is: 2.1 Workspace level is 2.0
    Groovy compiler level expected by the project does not match workspace compiler level.

    Thank you very much and sorry if it’s too simple
    I’m new to eclipse, groovy, grails

    • Angel – glad the videos are helpful. To install the Groovy 2.1 compiler in GGTS, first click on the Dashboard tab. If it is not visible, goto Help -> Dashboard. at the bottom left of the window, click Extensions. Scroll down the list and check Groovy 2.1 Compiler for Groovy-Eclipse. Then click Install on the lower right of the window. Follow the defaults to install, and it will configure itself. I have found it cumbersome to get existing projects to fully correct themselves, so I usually just delete the project and recreate it.


      • Yes, it worked! (lol, meanwhile I was using the Grails 2.2.4 ) perfect answer;
        Thank you very much for your answer Mike; do you mind if I copy your answer with your name and with a reference to this web page in my own blog?

  6. I gest heard about groove and Grails binning to late and Know i am trin gar in,
    so ware can i gat introdactory continuse tutorals on Grails, Tex plz.

  7. I started on GRAILS just today and your videos are great. But it will be great if you could include what should be done if some thing doesn’t go right. For example I am getting the following errors
    when I ran demo from cmd prompt
    Exception: java.lang.NumberFormatException thrown from the UncaughtExceptionHandler in thread “main”

    And when ran Test from IDE
    Compile –Non-interactive–refresh-dependencies-TERMINATED

  8. I just start studying Grails, and your tutorials are really great.
    Do you intend to make a video about GORM?

  9. Hello Mike,

    Thank you very much for your valuable efforts creating very flexible and ease of understanding grails.
    I was go through your video tutorials,I am easy learn the concept like scaffolding and others topics.
    I really very thank full to you.
    Keep it up.

  10. Hello im finding myself using grails, and i want to send a command line to console, i saw that it can be done by using “command”.execute() but im not getting anything, could you please help me with this?

  11. You sir are a lifesaver. It took me just a day to get my fingers on Grails (did some Servlet and JSP programming few years back)

    One quick question for you. What’s the hardware that you’ve used while doing this tutorial? It took you only ~2 seconds to restart app, while it takes me sometimes up to 30 sec for it (Amd dual core 2.1ghz, sata HDD). Does it have any additional tweaks that you recommend (or it’s just raw power + SSD)?

    Thanks in advance and keep up the good work.

    • Thanks for the feedback. Glad they were helpful. With my tongue in cheek, my hardware is the ability to remove frames from the video during the editing process. So like yourself, my restarts take a while, I just remove the majority of the dead space in the video. ~Mike

  12. Thank you very much for your good tutorials. You are a great teacher. Much better the Uni teachers who mostly there for the Cheques and not interested the education of their students. We learn more on here than Uni.

  13. Hi Mike. Yes, very helpful. A good HelloWorld++ start to the groovy/grails world. I’m still missing my Wysinwyg dev environments. Perhaps the grails form builder project will progress.

    Yes, if you can, please email me the slide so I can see how you did the transitions.

    Many Thanks

  14. Hi Mike,

    Great videos. Being totally new to grails. I watched them all. Great with dual monitors. Worked fine on my system.

    I was wondering what did you use to create the slides. Specifically the Introduction to Grails slides where you have the diagram that animates the arrows.


    • Paul:

      Glad they were helpful. All my slides were done in PowerPoint, with the screencasts recorded in Camtasia Studio. I’m happy to send you the intro .ppt if you ever need it.


  15. Hi Mike,
    Can you provide few tutorials (or any links) on writing webservices for grails. I am looking for something like sending data from grails server to mobile client.

  16. After watching the entire thing – Thank you!
    This is a really impressive tutorial series – and you’ve put it up free for everyone to watch! An amazing job – I really hope you make more videos!


    Google Chart Chart Plugin
    Author: James Williams (james.l.williams AT gmail DOT com) Contributer: Zan Thrash (zanthrash AT gmail DOT com) This is a plugin for Google Chart API.

    Supports pie charts, bar charts, line charts, venn diagrams, scatter plots, maps, text data encoding with scaling.
    Seeks to fully implement Google’s spec,
    Builder to create Google Chart URLs in domain or service layer.
    Recently added:QR codes

  18. Thank you so much. I’ve redone everything from scratch, and did not encounter any errors the second time around using a fresh directory. Your blog is magnificent. Excellent and wonderfully taught tutorials.

    More power, and more videos, please.

  19. I must compliment you on your very clear and simple screencasts. I’ve only watched two thus far but presume others are just as simple and clean.

    Personally, I’d love to see something similar for Gradle. Regardless, I will keep checking back to see what new and interesting things you have posted!

  20. Thanks for thees clear creencasts.
    I ran into this message, after having set up dynamic scaffolding and model associations :
    – I create an endUser (id 1) ; then I create a project : when I click create -> massage :
    ” Property [owner] of class [class projecttracker.Project] cannot be null ”
    … as if that first endUser was not existing, eventhough it does exist in the database (devDB with dbCreate = ‘update’). Do you have any hint as where this is coming from, of what I should check to fix it ?

    • It sounds like the error is coming from the Project object wanting to have an endUser assigned to it as an owner. Do you see an Owner field in your Project screen, and is it populated with an endUser when you create the Project? If you are still having problems, you may want to change your settings in the devDB back to “create-drop” and restart your server. Then you can be assured that your domain model definitions are in sync with your database tables. You will lose your data at that point, so you will need to recreate your endUser and Project.

      • Thank you Michael,
        I followed your instructions and all is well now.
        By the way, I completed the screen cast series up to security, and kudos for this extremely informative overview : It really helped me to discover the power and versatility of Grails (I am a Ruby On Rails fan), so I could see how far it can go : I will now digg into the tutorials to set up an application with real persistence (MySql), for my next project.

  21. I love java so as groovy and grail, if your provide us with more examples we can learn very much and use Grail as the first option for any enterprise application.

  22. Hello Mike

    Thanks you very much for this great tutorial. For my application I need to retain database of my previous session for login credential. In spite of putting “update” in front of ‘dbCreate’ field I am not being able to retain my previous database. I already updated dataSource in all three, i.e. production, test and development environment.



    • I assume that you know the default DB is only an in memory one?

      To really make it permenant you need to have a real DB running like MySQL and the correct driver in your grails project so that DB will be used. There are tutorials “out there” for this. Also see this issue in the SPRING ROO forum where they use exactly the same technology and so ask the same questions as you have.

      • Li: I am having the same plroebm. Our grails app depends on two external Java Modules as well. I have set up the grail module to depend on those two external modules, but the minute I try to build or run the app, I get a compiler error stating it cannot find the classes in those external modules.The only way I have round to get around it is to JAR those modules up and stick them in the LIB directory. Kind of a pain if you ask me.

    • Drop down one line to the URL setting and remove the mem: parameter. That will persist your database in a file instead of in memory.

  23. The first thing you do in video #9 “Creating a Controler” FAILS on my clean STS install.
    Compiling 1 source files…..
    | Domain class not found in grails-app/domain, trying hibernate mapped classes…
    | No domain class found for name ListProjects. Please try again and enter a valid domain class name

    I guess another step is needed / missing i.e. supplying the domain somewhere – somehow.

    Is the project on github then I could workout what I needed to add.

    • MY BAD

      My error was selecting the menu option
      …..- Generate controller
      where as – the method vid #9 wants you to use to create a controller is to select the menu option
      …..- Controller

  24. Thank you very much for this level of tutorial on Grails 2. I learned a lot. Can you post more videos on the removing the default index page from Grails framework and other stuffs like creating complex form for multiple domains. Eagerly waiting for those tuts.

  25. Hi,

    I would like to have an example with an existing database without an field ID (instead gut_nr) and Informix Serial.
    This is a already existing and I want to introduce grooy/grails instead of PHP.

    And nice would be an example with two 1:n – Relations

    case <person

    case ( case_nr SERIAL, case_short CHAR(20) )
    case_person ( cp_case_nr , cp_person_nr, cp_sort, cp_comment)
    person (person_nr SERIAL, person_name CHAR(20) )

    Yours Bernhard

    • At the relation, something ist lost in the HTML-Jungle.
      when using the gerater and less symbol

      case 1 :: N case_person N :: 1 Person.

      – One case can have many persons
      – one Perosn can be part of many cases

      The tabe case_person ist the relation-table in between the
      other two tables, but does not only realize the relation,
      but has own content, which describes the relation.

  26. Thanks a lot for this course. It really helped me getting started with grails.
    Hope that you will extend this course some time soon :)


  27. Like your videos, we have to do a project in uni on grails and we have to install and run the hello world ,,, but I think this might be better… HA HA
    I think I will use your subscribe Widget !!!!

  28. Thanks a lot for the video casts! I have been trying to follow “Getting Started With Grails” but I’ve been running into some issues because I’m using rails 2.0.1 and the book is a few years old (grails 1.2). I am looking forward for the other videos.

  29. Great tutorial.

    The problem, I had before, other tutorials miss the start of the things.
    Means: I learn any nice part, but I do not know, how to run.

    i.e. at the basics: its a great help, to learn, how to change the port. For the beginner, a great help, because if port 8080 is blocked: end of learning.

    And very useful, you use the new 2.0 – Version, so what you teach is brand new.

    Waiting for the next steps.

    • Julian:
      Glad you like them so far. I just posted the first two Project Tracker videos. I’m hoping to post new videos every week or two. I just added a subscribe widget on the home page if you want to be alerted by email when I post new videos (no spam – promise).

Leave a Reply

Your email address will not be published. Required fields are marked *