maven插件开发
maven插件熟练掌握的话毫无疑问会给开发带来许多便捷,这边初步整理了一下maven插件的开发方法
一个简单的maven插件
1. 配置project descriptor
首先一个maven插件,首先需要一个maven工程,然后配置一下项目描述:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>com.bytedance.regulus</groupId>
<artifactId>MyFirstPlugin</artifactId>
<version>1.0-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>
<packaging>maven-plugin</packaging>
<!-- ..... -->
<project/>
我这边不是很规范,其实<artifactId>
里的格式应该是<工程名>-maven-plugin
,然后官方的插件格式是maven-<工程名>-plugin
。但是我这样写好像也没有问题。
需要注意的是需要配置<packaging>
为maven-plugin
2. 继承实现一个Mojo
添加几个依赖
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.0</version>
</dependency>
<!-- dependencies to annotations -->
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
然后继承类AbstractMojo
@Mojo(name = "hello")
public class MyFirstMojo extends AbstractMojo {
@Parameter(defaultValue = "world", property = "mystring")
private String string;
@Parameter(defaultValue = "2")
private Integer integer;
public void execute() throws MojoExecutionException, MojoFailureException {
}
}
其中@Mojo
配置一些goal的基本信息
- name指明goal的名称,
- defaultPhase,mojo的默认阶段
- configurator,配置类
并且可以通过@Parameter
来注入参数,其中可配置的属性是:
- defaultValue,默认值
- property,mvn运行时可以通过
-D<property>=<value>
来指定属性
最后是execute执行逻辑
plugin的debug
A是我们的插件,B是调用插件的工程
- 插件处启动监听:
mvnDebug <groudId>:<artifactId>:<version>:<goal>
执行结果:
2. 目标项目进行debug