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插件开发

posted @ 2021-06-20 18:40  strongmore  阅读(331)  评论(0编辑  收藏  举报