编写插件代码
- 创建一个maven工程
打包方式配置成maven-plugin
1
<packaging>maven-plugin</packaging>
增加maven插件接口的依赖
1
2
3
4
5
6
7
8
9
10
11
12
13<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.4</version>
<scope>provided</scope>
</dependency>
</dependencies>创建插件类,继承AbstractMojo类
- 重写execute方法
- 添加标签@Mojo(name = “自定义名称”)
引入插件
另外创建一个工程,在pom文件中绑定自定义的插件:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<build>
<plugins>
<plugin>
<groupId>cn.com.wyc</groupId>
<artifactId>my-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<configuration/>
<executions>
<execution>
<phase>clean</phase>
<goals>
<goal>sayHello</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
#即添加插件的坐标,配置插件需要绑定的生命周期阶段及插件的目标
插件注释
- defaultPhase 默认绑定的生命周期阶段,pom文件不配置,则使用默认配置
- requiresOnline
:是否要求maven必须是在线状态,默认值为false - requiresDirectInvocation
:为true时,该目标就只能通过命令行直接调用。默认为false - requiresDependencyResolution
:在运行mojo之前必须解析所有指定范围的依赖,如maven-surefire-plugin的test目标带有requiresDependencyResolution test标注,表示执行测试前,所有测试范围的依赖必须得到解析 - requiresDependencyCollection
- instantiationStrategy
- executionStrategy
- requiresProject
:该目标是否必须在一个maven项目中运行(如测试插件用于测试其他项目),默认为true - requiresReports
:是否要求项目报告已经生成,默认为false - aggregator 当mojo在多模块项目上运行时,该标注表示目标只会在顶层模块运行
- inheritByDefault
- configurator
- threadSafe