Last updated by Peter Dietz 5 months ago

Grails development in IntelliJ IDEA

Generate IntelliJ IDEA Project File

Grails can generate an IDEA project file (.ipr, .iml) to enable easy project opening.
grails integrate-with --intellij

Sites to check for detailed information

IDE Configuration

IntelliJ IDEA 8 and higher

The support for Groovy and Grails as well as the set of inspection rules come bundled and no special action needs to be taken. For more information :

IntelliJ IDEA 7

  • Download and install Groovy and Grails distributions
  • Download and install IntelliJ IDEA 7 from www.jetbrains.com/idea/download/
  • Download and install the JetGroovy plug-in using the Settings dialog in IntelliJ IDEA
  • Configure the JetGroovy plug-in in the Settings dialog - set the paths to the Groovy and Grails installation directories
  • Optionally download and install InspectorGroovy, a plugin containing Groovy-specific code inspections

Creating and working with a project

Create a Grails project

Figure 1 - Create new project

You start a Grails project just like any other type of project in IntelliJ IDEA. You have to select Grails Application as the project type. Once you specify project name and location, a new project with proper Grails application structure is generated.

Figure 2 - The generated project structure

If you expand the individual folders you'll see their contents with different colors showing different types of content. Also all the necessary libraries have been added to the project, so that you can get intelligent assistance from the IDE.

Figure 3 - Colors indicating different content type

Editing configuration files

Although you are unlikely to spend excessive amount of time editing configuration files when working with Grails, you'll get syntax highlighting and all the Groovy code assistance when editing these files.

Figure 4 - Editing configuration files

Generate classes

In the Project view, you can generate Grails objects either with Alt + Insert key shortcut or with your mouse.

Figure 5 - Generating Grails objects

The generated files can be opened in the editor and again you get all the Groovy-aware coding assistance. For domain classes, controllers, services, custom tag libs or other Groovy code.

Figure 6 - Coding assistance for Grails objects

Figure 7 - Code assistance for a custom TagLib

If you like graphical gadgets, you can use the graphical ER diagram designer to visualize the domain classes. Just click the Domain classes dependencies tab in the bottom of the editor window when editing a domain class to open the graphical designer. The designer allows you to update the domain classes, as well.

Figure 8 - ER diagram designer

Editor decorator

The editor is decorated with helpful buttons to quickly navigate among all the pieces related to the currently edited class.

Figure 9 - Domain class editor decoration

The buttons can be used to generate the missing pieces, as well.

GSP editing

Of course, you can also edit the generated gsp files, again with Grails-aware coding assistance at hands.

Figure 10 - Assistance inside gsp code

The gsp editor is aware of Grails tags as well as your own custom tags and provides code completion for them.

Figure 11- Code completion for tags

You also get JavaScript code assistance just like in a JSP editor.

Figure 12 - JavaScript code assistance

The gsp editor is decorated, too, to allow quick navigation among different views or the other related Grails objects.

Figure 13 - GSP editor navigation decorator

Using classes and libraries defined on a Grails plugin

Some Grails plugins you install will have classes you wish to extend. Take for instance the Jsecurity plugin, which provides the AbstractPermission class for permissions. If you simply extend the controller class and attempt to run your project, Idea will raise a compile error before you run the application. You need to tell Idea where to find these sources.

The first step is to add the libraries to your project. Go to Preferences, and click on Project Settings. On the left, you'll see several options: General, Modules and Libraries will be the first three. Click on Libraries, and then the Add (+) button. Name your library, and then attach the Jar directories where the plugin libraries lie.

To add the sources, you will want to go to Preferences > Project Settings and then click on Modules. On the right you'll see your Content Root, with Source Folders and Test Source Folders under it. Besides it will be a tree of your project. Select the source directories where the plugin files are (plugins/jsecurity-0.1.1/grails-app/controllers in this example), right-click it and select Sources from the menu. This will add it to the source directories, and you will now be able to run your Grails application.

Running a Grails application

Grails applications are run through the Run Configuration just like other types of applications. You need to create a Grails Run Configuration and choose one of the three available configuration types to either run the application, tests or web tests.

Figure 14 - Run Configuration set up

Running Grails unit tests

To run unit tests with IntelliJ's internal test runner, follow the instructions in this blog post: Running Grails unit tests in IntelliJ. (Note: this only works for unit tests; no integration test environment will be bootstrapped.)

Special cases

Spring configuration

In Grails you may sometimes need to configure Spring directly. IDEA let's you edit the resources.xml file and gives you the full Spring code assistance you get for Spring projects in Java, including autowiring dependencies and relationship visualization. So have no fear to combine Groovy and Java Spring beans in your Grails projects.

Figure 15 - Spring configuration assistance

Figure 16 - Spring configuration assistance

Hibernate configuration

If you decide to specify custom hibernate mapping, you again get all the hibernate assistance available for Java projects. You can let IDEA generate hibernate entities from a database schema, check for errors in an existing hibernate configuration and provide developers with coding assistance.

Figure 17 - Coding assistance in hibernate configuration files

Figure 18 - Database-aware coding assistance