前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义maven插件

自定义maven插件

作者头像
十毛
发布2019-11-04 02:33:50
6990
发布2019-11-04 02:33:50
举报

制作插件

  • 修改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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 制作插件
  • 使用tenmao-plugin
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档