前言:自定义插件就是解决在maven执行过程的生命周期里执行一些自定义的逻辑。
1.首先导入maven的api
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.3.9</version>
</dependency>
</dependencies>
2.修改POM文件的packaging为maven-plugin
<packaging>maven-plugin</packaging>
3.继承AbstractMojo 并重写execute方法
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
/**
* @goal CustomMavenMojo
* @phase compile
* @requiresProject false
*/
public class CustomMavenMojo extends AbstractMojo {
/**
* @parameter expression="${name}"
* @required
*/
private String name;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("自定义插件成功,参数name:" + name);
}
}
其中注释就是maven插件很重要的元数据
/** * @goal CustomMavenMojo:表示该插件的服务目标 * @phase compile:表示该插件的生效周期阶段 * @requiresProject false:表示是否依托于一个项目才能运行该插件 * @parameter expression="${name}":表示插件参数,使用插件的时候会用得到 * @required:代表该参数不能省略 */
4.install项目并测试
mvn install项目之后
再执行
com.wangnian:CustomMaven-plugin:CustomMavenMojo -Dname=wangnian
com.wangnian 包名
CustomMaven-plugin maven 项目名
CustomMavenMojo 注释上的 @goal制定的名
-Dname=wangnian 注释@parameter expression="${name}制定的参数
5.在其他项目中依赖该插件
<plugin>
<groupId>com.wangnian</groupId>
<artifactId>CustomMaven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<!--<phase>process-classes</phase>-->
<goals>
<goal>CustomMavenMojo</goal>
</goals>
</execution>
</executions>
</plugin>
在插件中已经声明了插件的生命周期是 compile时候执行 这里可以不用指明