Groovy-Eclipse provides GEM, a compiler plugin for Maven. Using this compiler plugin, it is possible to compile your maven projects using the Groovy-Eclipse compiler.
Why another Groovy compiler for Maven? What about GMaven?
There are several benefits that the GEM provides over GMaven, but at the same time it has a few limitations. First, the benefits:
- GEM does not require the creation of Java stubs so that your Groovy files can compile against Java files. This will prevent some arcane compile errors from appearing.
- The Groovy-Eclipse compiler is the same inside Eclipse and inside Maven, and so configuration across the two platforms can be simplified.
- GEM is a standard compiler plugin for Maven and so it can be configured using the same simple configuration as the javac compiler plugin for Maven. http://maven.apache.org/plugins/maven-compiler-plugin/index.html It is therefore exceptionally easy to gradually introduce Groovy code into an existing project. All you need to do is change the compiler plugin that the pom references.
There are some limitations:
1. Only one compiler level is supported. This is currently Groovy 1.7.5. If you require a different version of Groovy, then GMaven is your only option.
2. GroovyDoc is not supported.
3. Groovy Mojos are not supported.
Whether or not the Groovy-Eclipse compiler plugin for Maven is appropriate for your project will depend on your requirements.
- How to use GEM---Setting up the POM
- M2Eclipse integration
Groovy-Eclipse also provides integration with M2Eclipse, the Eclipse's tool support for Maven. Using this integration will ensure that your GEM projects will be properly configured when they are imported into Eclipse. You can install the integration from the following update site:
- Where to ask questions
Please ask all questions on the Groovy-Eclipse mailing list. Any bugs or feature enhancements should go on Groovy-Eclipse's jira.
- More information
GEM was originally described in the following blog posts, but these posts are no longer updated and this page will always contain the most recent information.