zoukankan      html  css  js  c++  java
  • 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插件开发

  • 相关阅读:
    系统改造/升级项目的注意点
    phpunit相关
    IE浏览器:定义文档兼容性
    pptx,docx,xlsx 文件下载问题
    常用linux命令
    oracle 子查询写法
    QQ上传大文件为什么这么快
    decimal tostring 格式
    2020HDU多校第三场 1005 Little W and Contest
    火车进栈(进出栈的模拟,dfs爆搜)
  • 原文地址:https://www.cnblogs.com/strongmore/p/14907624.html
Copyright © 2011-2022 走看看