The curious case of Grails’ generate-all
I’ve been using Grails for some years now, and my normal workflow is something like: grails create-app
, followed by creating some domain class, followed by a a grails generate-all
, and a grails run-app
. It helps greatly in selling Grails, and people are usually quite impressed by the speed of having an up and running hello-world application in Grails.
However, since Grails 2.3.0, this is not the case anymore. The Grails scaffolding is now a separate plugin, and while that’s not bad per se, it is bad that it’s a compile time plugin. The compile time means that the plugin is only added to the project whenever a compile time target is used, and personally, I only get into the compile time whenever I do a run-app. And yes, you’re right, that’s after the generate-all, which, as you might have guessed, doesn’t work in Grails 2.3.0 before having run a compile target (and, not coincidentally, grails create-domain-class
is such a target…)
So, should you run into this, running grails compile
, even though it’s functionally not needed, solves your issues.