gradle-maven-plugin
This is a maven plugin that makes it easy to invoke Gradle tasks from within Maven.
Objective
Gradle is an awesome general-purpose tool. If your project/organization is committed to maven, switching to gradle may not be a practical option. The plugin is conceptually similar to the maven-antrun-plugin, which allows ant to be invoked from maven.
Now instead of using Ant to perform ad-hoc tasks from within Maven, you can use Groovy/Gradle instead!
Usage
The gradle-maven-plugin is now in Maven Central, so there is no need to declare a custom repository.
To use the plugin, simply declare the plugin and bind it to the maven lifecycle phase of your choice:
<plugin>
<groupId>org.fortasoft</groupId>
<artifactId>gradle-maven-plugin</artifactId>
<version>1.0.5</version>
<configuration>
<tasks>
<!-- this would effectively call "gradle doSomething" -->
<task>doSomething</task>
</tasks>
</configuration>
<executions>
<execution>
<!-- You can bind this to any phase you like -->
<phase>compile</phase>
<goals>
<!-- goal must be "invoke" -->
<goal>invoke</goal>
</goals>
</execution>
</executions>
</plugin>
Now when you run maven, gradle will be invoked and execute the "doSomething" task defined in build.gradle
.
Obviously you can change the task(s) to suit your needs.
In this example, the gradle invocation will happen during the maven "compile" phase, but this can be easily changed by changing the <phase> element value.
Options
These options can be given in the <configuration> element:
option | required | description | example |
---|---|---|---|
task | yes (or tasks) | gradle task to be invoked | <task>myTask</task> |
tasks | yes (or task) | gradle tasks to be invoked | <tasks> |
gradleVersion | no | version of gradle to use | <gradleVersion>1.6</gradleVersion> |
gradleProjectDirectory | no | path to the location of your build.gradle | <gradleProjectDirectory> |
javaHome | no | give and explicit path to a JAVA_HOME | <javaHome> /my/path/to/jdk </javaHome> |
args | no | pass argument to gradle | <args> |
jvmArgs | no | pass JVM arg to gradle | <jvmArgs> |
Plugin Testing
Here is some information on maven plugin testing. This project is currently using the maven-invoker-plugin for testing.