Maven学习笔记之如何编写Maven项目的Plugins插件

1 篇文章 0 订阅

Maven学习笔记之如何编写Maven项目的Plugins插件

背景

今天临下班时,同事询问我如何编写Maven Plugins,因为没有接触过相关知识,遂回家查阅了相关文档后编写了一个demo,实现了一个简单的maven plugins。

项目需求

开发一个Maven Plugin,并且运行它的时候将在控制台打印当前时间。

开发工具

  • Intellij IDEA 2018.2.3(下文简称“IDEA”)

创建Maven Plugin

首先,我们使用IDEA创建一个新的Maven项目。

  1. File -> New - > Project
    选择项目类型

  2. 依次输入你项目的GroupId、ArtifactId、Vserion

项目信息

  1. 选择项目依赖的Maven地址和你需要配置的其他Properties
    项目配置

  2. 选择你项目存放的地址
    项目存放地址

  3. 稍等片刻,待项目构建好后项目架构如下:
    项目架构
    项目搭建好后,我们就可以进行Maven Plugin的开发了。


在开始开发之前,我们先来了解下什么是Maven Plugin。

Maven的工具由一个又一个的插件组成的,插件类继承了AbstractMojo类,需要覆写execute方法。
getLog()获取的是AbstractMojo内部的log,类型是:org.apache.maven.plugin.logging.Log; 在Mojo的开发中,不要使用其他的Log基础设施。注: Mojo = Maven Old Java Object;
引用地址:https://www.cnblogs.com/yves/p/6085594.html

  1. 接下来,我们引用两个maven依赖:maven-plugin-api和maven-plugin-annotations,前者是Maven插件开发的Api,后者则是Maven插件注解的Api
    <!-- https://mvnrepository.com/artifact/org.apache.maven/maven-plugin-api -->
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>3.5.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.maven.plugin-tools/maven-plugin-annotations -->
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.5.2</version>
      <scope>provided</scope>
    </dependency>
  1. 接着设置packaging
<packaging>maven-plugin</packaging>
  1. 创建一个继承了AbstractMojo的插件入口实现类,该实现类必需加上Mojo注解用来标注其为启动类。
package com.qianlingo;

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 java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * Run Class for maven plugin
 * @author qianling@qianlingo.com
 */
@Mojo(name = "dateTime")
public class DateTime extends AbstractMojo {

    /**
     * 执行插件
     * @throws MojoExecutionException 插件执行出错异常
     * @throws MojoFailureException   插件执行失败异常
     */
    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
        System.out.println(LocalDateTime.now().format(dateTimeFormatter));
    }
}
  1. 执行Maven的clean、install,打包插件生成类库
    执行Maven清理、打包操作
  2. 构建成功时我们可以在本地Maven仓库找到该Maven插件的类库,如下图:
    本地Maven仓库中该插件的位置

引用Maven Plugin

到这一步,我们就可以在其他项目中引用该插件啦

            <plugin>
                <groupId>com.qianlingo</groupId>
                <artifactId>datetime</artifactId>
                <version>1.0-SNAPSHOT</version>
            </plugin>

引用的插件显示
功能实现

结尾

至此,一个简单的Maven Plugin插件就编写完成了。大家可以在熟悉这个操作的基础上编写自己的需求代码。
作者已将该Maven Plugin项目放至码云,代码虽简单,但还是喜欢能给你带来帮助。
码云地址:https://gitee.com/qianlingooo/maven-plugin-datetime

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值