1.创建一个插件项目
要创建一个插件项目,你应该使用Maven Archetype插件。以下的命令会创建一个
插件,其groupId是org.codehaus.mojo,artifactId是first-maven-plugin:
$ mvn archetype:create \
-DgroupId=org.codehaus.mojo\
-DartifactId=first-maven-plugin \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-mojo
groupId默认情况下有两个可以使用,一般不要改动,artifactId自己随便命名
工程创建后会包含一个pom.xml,如下:
2.创建mojo
Mojo接口只关心两件事情:目标运行结果的日志记录,以及运行一个目标。当你编写自
定义插件的时候,你会要扩展AbstractMojo。AbstractMojo处理setLog()和getLog()的
实现,并包含一个抽象的execute()方法。在你扩展AbstractMojo的时候,你所需要做的
只是实现execute()方法。
每一个mojo需要一个独立标识
echo表示该mojo的入口
3.一个简单的mojo
package org.sonatype.mavenbook.plugins;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
public class EchoMojo extends AbstractMojo
{
private Object message;
public void execute()
throws MojoExecutionException, MojoFailureException
{
getLog().info( message.toString() );
}
}
@requiresProject false可以让mojo编译后在任意目录下执行
进到工程存放目录下mvn install后,就可以在命令行
$ mvn org.codehaus.mojo:first-maven-plugin:1.0-SNAPSHOT:echo
就会打印出Hello Maven World...
4.配置插件前缀
在命令行声明groupId,artifactId,version和goal十分麻烦。为了处理这个问题,Maven为插件分配了前缀。
在总控pom.xml中配上
就可以在命令行中执行
mvn first:echo
5.传递参数
private Object message;
maven提供了一种用注释传递参数的方法,非常强大。变量${echo.message}的值为NULL时,就会使用
default-value的值,此时private Object message = "Hello Maven World..."
也可以通过调用该mojo时将参数传进来,方法如下:
在另外一个mojo的总控pom.xml中配置如下片段: