美文网首页
自定义maven插件

自定义maven插件

作者: 十毛tenmao | 来源:发表于2019-10-29 23:13 被阅读0次

制作插件

  • 修改packaging
<!-- 插件名字tenmao-plugin -->
<artifactId>tenmao-plugin</artifactId>

<!-- maven-plugin打包方式 -->
<packaging>maven-plugin</packaging>
  • 引入jar包
<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>maven-plugin-api</artifactId>
    <version>3.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.maven.plugin-tools</groupId>
    <artifactId>maven-plugin-annotations</artifactId>
    <version>3.6.0</version>
    <scope>provided</scope>
</dependency>

这两个依赖是自定义插件必须的依赖,代表了它是一个Mojo工程,里面包含了一些Mojo的接口和抽象类以及注解。
Mojo 就是 Maven plain Old Java Object。每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的Java类。插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。

  • 插件Mojo的定义
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

/**
 * @author tenmao
 */
@Mojo(name = "mao-goal", defaultPhase = LifecyclePhase.PACKAGE)
public class TenmaoMojo extends AbstractMojo {
    /**
     * 插件参数:name
     */
    @Parameter
    private String name;

    /**
     * 插件参数:age
     */
    @Parameter
    private Integer age;

    public void execute() throws MojoExecutionException {
        System.out.printf("hello world, this is %s, age is %d %n", name, age);
    }
}
  • 发布使用
mvn clean install

使用tenmao-plugin

<plugin>
    <groupId>com.tenmao</groupId>
    <artifactId>tenmao-plugin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>mao-goal</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
    <!-- 参数配置 -->
        <name>tenmao</name>
        <age>100</age>
    </configuration>
</plugin>
  • 使用
mvn clean package -Dmaven.test.skip

# 输出一下内容
[INFO] --- tenmao-plugin:1.0-SNAPSHOT:mao-goal (default) @ maibao ---
hello world, this is tenmao, age is 100

参考

相关文章

网友评论

      本文标题:自定义maven插件

      本文链接:https://www.haomeiwen.com/subject/zesnvctx.html