Skip to content

Instantly share code, notes, and snippets.

@keeganwitt
Last active Feb 1, 2022
Embed
What would you like to do?
Groovyc via Maven AntRun Example
<?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>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovyc-antrun-example</artifactId>
<name>Groovyc Maven AntRun Example</name>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<groovyGroupId>org.codehaus.groovy</groovyGroupId>
<groovyVersion>3.0.9</groovyVersion>
<!-- <groovyGroupId>org.apache.groovy</groovyGroupId> -->
<!-- <groovyVersion>4.0.0</groovyVersion> -->
</properties>
<dependencies>
<dependency>
<groupId>${groovyGroupId}</groupId>
<artifactId>groovy</artifactId>
<version>${groovyVersion}</version>
<classifier>indy</classifier>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.9.0</version>
<executions>
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</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}"
targetBytecode="${maven.compiler.target}" indy="true" encoding="${project.build.sourceEncoding}">
<classpath refid="maven.compile.classpath" />
<src>
<pathelement path="${project.basedir}/src/main/java" />
</src>
<javac source="${maven.compiler.source}" target="${maven.compiler.target}" />
</groovyc>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</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}"
targetBytecode="${maven.compiler.target}" indy="true" encoding="${project.build.sourceEncoding}">
<classpath refid="maven.test.classpath" />
<src>
<pathelement path="${project.basedir}/src/test/java" />
</src>
<javac source="${maven.compiler.source}" target="${maven.compiler.target}" />
</groovyc>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-ant</artifactId>
<version>${groovyVersion}</version>
<classifier>indy</classifier>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
@davidkuster
Copy link

davidkuster commented May 25, 2016

This is a great example, thanks for sharing. Note though that I ran into a problem with Groovy not being able to see a Java class under src/test/java. Updating the phase from generate-test-sources to process-test-classes resolved it.

@keeganwitt
Copy link
Author

keeganwitt commented Dec 30, 2017

I've updated the example to use a nested javac task instead of the normal compiler plugin (and changed the phase AntRun is bound to), this should allow circular dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment