There are several approaches to compiling Groovy code in your Maven projects. GMavenPlus tries to fill the role of the now discontinued GMaven and is the most feature-rich. The Groovy-Eclipse compiler plugin for Maven is a unique solution because it sidesteps joint compilation issues. Read this page for an overview of how the choices in build tools differ.

A third approach is to use Maven's Ant plugin to compile a groovy project. Note that the Ant plugin is bound to the compile and test-compile phases of the build in the example below. It will be invoked during these phases and the contained tasks will be carried out which runs the Groovy compiler over the source and test directories. The resulting Java classes will coexist with and be treated like any standard Java classes compiled from Java source and will appear no different to the JRE or any Java classes that interact with your Groovy classes.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!-- This examples assumes your main Groovy is in src/main/groovy and your test Groovy is in src/test/groovy. -->
  <!-- The version of Groovy used in the example requires Java 6 or higher. -->
  <!-- This example won't work for Groovy that depends on Java or circular dependencies between Java and Groovy. -->

  <groupId>org.codehaus.groovy</groupId>
  <artifactId>groovyc-via-ant-test</artifactId>
  <name>test groovcy project</name>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <groovyVersion>2.3.2</groovyVersion>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>${groovyVersion}</version>
      <!-- Uncomment line below to use invokedynamic version of Groovy (requires Java 7 or higher). -->
      <!--<classifier>indy</classifier>-->
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>compile</id>
            <phase>generate-sources</phase>
            <configuration>
              <target>
                <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
                  <classpath refid="maven.compile.classpath" />
                </taskdef>
                <mkdir dir="${project.build.outputDirectory}" />
                <groovyc srcdir="${basedir}/src/main/groovy" destdir="${project.build.outputDirectory}" encoding="${project.build.sourceEncoding}">
                  <classpath refid="maven.compile.classpath" />
                </groovyc>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
          <execution>
            <id>test-compile</id>
            <phase>generate-test-sources</phase>
            <configuration>
              <target>
                <taskdef name="groovyc" classname="org.codehaus.groovy.ant.Groovyc">
                  <classpath refid="maven.test.classpath" />
                </taskdef>
                <mkdir dir="${project.build.testOutputDirectory}" />
                <groovyc srcdir="${basedir}/src/test/groovy" destdir="${project.build.testOutputDirectory}" encoding="${project.build.sourceEncoding}">
                  <classpath refid="maven.test.classpath" />
                </groovyc>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
      </plugin>
    </plugins>
  </build>
</project>
</project>

This assumes you have a Maven project setup with "groovy" subfolders as peers to the java src and test subfolders. You can use the java/jar archetype to set this up then rename the java folders to groovy or keep the java folders and just create groovy peer folders.  After defining the build section as in the above example, you can invoke the typical Maven build phases normally. For example, "mvn test" will execute the test phase, compiling Groovy source and Groovy test source and finally executing the unit tests. If you run "mvn jar" it will execute the jar phase bundling up all of your compiled production classes into a jar after all of the unit tests pass. For more detail on Maven build phases consult the Maven2 documentation.