一、项目搭建
1、创建新项目
打包方式:
<packaging>maven-plugin</packaging>
jar包依赖:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>2.0</version>
</dependency>
二、代码简介
默认生成mojo:
package com.itliwei;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
* Goal which touches a timestamp file.
*
* @goal touch
*
* @phase process-sources
*/
public class MyMojo
extends AbstractMojo
{
/**
* Location of the file.
* @parameter expression="${project.build.directory}"
* @required
*/
private File outputDirectory;
public void execute()
throws MojoExecutionException
{
//.......
System.out.println("hello itliwei : maven plugin execute success");
}
}
这里简单介绍一下自定义插件的几个重要组建:
1、goal 注解
* @goal touch
表示该插件的服务目标
在处理源码的时候,plugin-tools 会把使用了Javadoc 里包含 @goal 注释或 @Mojo 注解的类来当作一个 Mojo 类
* @phase process-sources
表示该插件的生效周期阶段
2、AbstractMojo 类
* public class MyMojo extends AbstractMojo
AbstractMojo是一个抽象类
3、parameter 注解
* @parameter expression="${project.build.directory}"
插件参数
* @required
是否必须
4、execute 方法
* public void execute() throws MojoExecutionException
实现execute方法,具体实现插件业务
三、插件运行
有了上面的四部分,就可以运行插件:
1、安装插件
maven install
2、执行插件
mvn com.itliwei:mavendemo-maven-plugin:1.0-SNAPSHOT:touch
如果实用最新版本,可以将命令版本号去掉:
mvn com.itliwei:mavendemo-maven-plugin:touch
四、基础拓展
上文中的parameter注解还记得吗?
/**
* @parameter expression="${input.message} "
* @required
*/
private String inputMessage;
public void execute()
throws MojoExecutionException
{
System.out.println("hello itliwei : "+inputMessage);
}
重新打包,重新运行:
mvn mavendemo-maven-plugin:touch -Dinput.message="unbelievable"
五、使用案例
<plugin>
<groupId>com.itliwei</groupId>
<artifactId>mavendemo-maven-plugin</artifactId>
<configuration>
<inputMessage>unbelievable</inputMessage>
</configuration>
</plugin>
执行命令,输出结果: