• java开发maven插件入门


    前言

    在项目中我们使用到了大量的官方的maven插件,如clean,compiler,今天我们自己开发一个插件来更好的理解插件的原理。

    创建maven插件项目

    官方插件命名的格式为 maven-xxx-plugin,非官方的插件命名为 xxx-maven-plugin

    修改pom文件

    <packaging>maven-plugin</packaging>
    

    默认的打包类型为jar

    <dependencies>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>3.5.0</version>
      </dependency>
    
      <!-- dependencies to Java 5 annotations -->
      <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>3.5</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
    

    添加上述依赖

    <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
              <source>11</source>
              <target>11</target>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>3.6.0</version>
          </plugin>
        </plugins>
      </build>
    

    添加插件依赖,默认的plugin插件版本为3.2,不支持注解

    开发插件

    import org.apache.maven.plugin.AbstractMojo;
    import org.apache.maven.plugin.MojoExecutionException;
    import org.apache.maven.plugin.MojoFailureException;
    import org.apache.maven.plugins.annotations.Mojo;
    import org.apache.maven.plugins.annotations.Parameter;
    
    @Mojo(name = "first")
    public class MyFirstMojo extends AbstractMojo {
    
      @Parameter(name = "name", defaultValue = "lisi")
      private String name;
    
      @Parameter(name = "address", property = "address", defaultValue = "上海")
      private String address;
    
      public void execute() throws MojoExecutionException, MojoFailureException {
        getLog().info("this is a test plugin," + name + " " + address);
      }
    }
    

    定义一个类继承AbstractMojo ,使用注解Mojo修饰,表示这是一个Mojo,每个Mojo实现一个goal,一个插件就是由一系列Mojo构成的。
    注解Parameter用来定义参数,property 表示可以从项目属性中取值。插件项目install之后,本地其他项目就可以使用了。

    使用插件

    <plugin>
            <groupId>com.imooc</groupId>
            <artifactId>maven-plugin-first</artifactId>
            <version>1.0-SNAPSHOT</version>
            <configuration>
              <name>lisi2</name>
            </configuration>
    </plugin>
    

    点击之后会输出

    我们也可以绑定到指定的生命周期阶段执行

    <plugin>
            <groupId>com.imooc</groupId>
            <artifactId>maven-plugin-first</artifactId>
            <version>1.0-SNAPSHOT</version>
            <executions>
              <execution>
                <phase>compile</phase>
                <goals>
                  <goal>first</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <name>lisi2</name>
            </configuration>
          </plugin>
        </plugins>
    

    在编译时自动执行

    参考

    【Maven】maven 插件开发实战
    Maven插件开发

  • 相关阅读:
    Redis系列二 Redis数据库介绍
    Redis系列一 Redis安装
    SpringData系列四 @Query注解及@Modifying注解
    SpringData系列三 Repository Bean 方法定义规范
    SpringData系列二 Repository接口
    SpringData系列一 Spring Data的环境搭建
    ThinkPHP3.1.3 Fast & Simple OOP PHP Framework 显示错误
    STL学习系列之一——标准模板库STL介绍
    STL之二:vector容器用法详解
    STL使用总结
  • 原文地址:https://www.cnblogs.com/strongmore/p/14907624.html
Copyright © 2020-2023  润新知