maven自定义插件

编写插件代码

  • 创建一个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
显示 Gitment 评论