maven-自定义插件

Author Avatar
丁起男 11月 27,2020
  • 在其它设备中阅读本文章

maven-自定义插件

maven中的插件是有很多目标(goal)组成的,开发插件,实际上就是去编写插件中目标的具体代码。

每个目标对应一个java类,这个类在maven中叫做mojo,maven提供了一个mojo的接口,我们开发插件也就是去实现这个接口的方法

org.apache.maven.plugin.Mojo接口有3个方法

  1. execute:这个方法比较重要,目标的主要代码就在这个方法中实现,当使用mvn命令调用插件的目标的时候,最后具体调用的就是这个方法
  2. setLog:注入一个标准的maven日志记录器,允许这个mojo向用户传递事件和反馈
  3. getLog:获取注入的日志记录器

Log:日志记录器,这是一个日志接口,里面定义了很多方法,主要作用输出日志,比如运行mvn clean,会输出很多提示信息,这些输出信息就是通过Log来输出的

Mojo接口有个默认的抽象类:

org.apache.maven.plugin.AbstractMojo

这个类把Mojo接口中的setLog和getLog实现了,而execute方法没有实现,交给继承者去实现

具体步骤

  1. 创建一个maven构建,这个构建的packaging比较特殊,必须为maven-plugin,标识构建是一个插件类型

    <packaging>maven-plugin</packaging>
    
  2. 导入maven插件依赖

    <dependency> 
        <groupId>org.apache.maven</groupId> 
        <artifactId>maven-plugin-api</artifactId> 
        <version>3.0</version> 
    </dependency> 
    <dependency> 
        <groupId>org.apache.maven.plugin-tools</groupId> 
        <artifactId>maven-plugin-annotations</artifactId> 
        <version>3.4</version> 
        <scope>provided</scope> 
    </dependency>
    
  3. 创建一个目标类,需要继承AbstractMojo或实现Mojo

  4. 目标类中添加注解

    @org.apache.maven.plugins.annotations.Mojo(name="目标名称")
    
  5. 在目标类的execute方法中实现具体的逻辑

  6. 安装插件到本地仓库

    mvn clean install
    
  7. 使用插件

参数

@Parameter注解将变量标识为mojo参数

  • defaultValue:定义变量的默认值
  • property:为-D参数名=参数值设置参数名

使用这通过:

  1. pom文件:

    <configuration> 
        <参数名>参数值</参数名> 
    </configuration>
    
  2. mvn命令:

    mvn ... -D参数名=参数值