编写插件代码
- 创建一个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