这个插件在更新到2.0之后改了名字。之前为:
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
现在为:
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.0</version>
不过只是改名字而已,用法还是相同的。
这个插件的主要目的是能够在maven环境下执行groovy操作,和antrun差不多也分为两种,一种是直接在插件配置里下groovy代码片段,另一种是执行groovy脚本或类。
目标:
groovy:execute
使用
使用1,在source内些groovy脚本
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<source>
println 'i can run groovy within maven!'
</source>
</configuration>
</plugin>
使用2,执行hi.groovy
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.0</version>
<configuration>
<source>${project.basedir}/src/main/groovy/hi.groovy</source>
</configuration>
</plugin>
内置变量
project | 当前maven项目的对象,包含解析的properties。 |
pom | 同project,相当于其别名 |
session | MavenSession对象 |
settings | 对应着settings.xml的对象。 |
log | SLF4J的日志实例 |
ant | antBuilder实例,方便处理ant任务。 |
fail() |
A helper to throw MojoExecutionException
|
使用举例:
可以直接在groovy脚本中使用
ant.echo('i am ant!')
println project.packaging
def servers = settings.servers
for(def server :servers){
println server.id
}
自定义变量
可以通过properties和defaults来自定义变量给脚本用
<properties>
<target>${project.build.directory}</target>
<repo>${settings.localRepository}</repo>
<project>this</project>
</properties>
<defaults>
<name>Roger Wang</name>
</defaults>
使用的方法都一样,如:
<source>
println 'Hello ' + properties['name']
</source>
类的依赖
java的依赖
gmaven可以通过classpathScope参数指定访问maven项目的classpath的范围。
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<classpathScope>runtime</classpathScope>
<source>
// this script has access to the compiled classes and all depencencies of scope=runtime.
</source>
</configuration>
</execution>
</executions>
</plugin>
默认为none表示没有额外的classpath。
tips:
classpathScope选项:
compile
none
provided
runtime
test
可以通过依赖的方式加所需要的class添加到classpath
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</plugin>
groovy的依赖
gmaven通过参数scriptpath指定的路径去查找执行groovy文件。
例如你定义了一个名为Helper.groovy的文件在${project.basedir}/src/main/groovy目录下,你可以这样配置来使用它:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<scriptpath>
<path>${project.basedir}/src/main/groovy</path>
</scriptpath>
<source>
import Helper
def h = new Helper()
</source>
</configuration>
</execution>
</executions>
</plugin>
ss