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

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

  • 背景
    • 项目需求
    • 开发工具
    • 创建Maven Plugin
    • 引用Maven Plugin
  • 结尾

背景

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

项目需求

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

开发工具

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

创建Maven Plugin

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

  1. File -> New - > Project
    Maven学习笔记之如何编写Maven项目的Plugins插件_第1张图片

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

Maven学习笔记之如何编写Maven项目的Plugins插件_第2张图片

  1. 选择项目依赖的Maven地址和你需要配置的其他Properties
    Maven学习笔记之如何编写Maven项目的Plugins插件_第3张图片

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

  3. 稍等片刻,待项目构建好后项目架构如下:
    Maven学习笔记之如何编写Maven项目的Plugins插件_第4张图片
    项目搭建好后,我们就可以进行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
    
    
      org.apache.maven
      maven-plugin-api
      3.5.0
    
    
    
      org.apache.maven.plugin-tools
      maven-plugin-annotations
      3.5.2
      provided
    
  1. 接着设置packaging
maven-plugin
  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 [email protected]
 */
@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学习笔记之如何编写Maven项目的Plugins插件_第5张图片
  2. 构建成功时我们可以在本地Maven仓库找到该Maven插件的类库,如下图:
    Maven学习笔记之如何编写Maven项目的Plugins插件_第6张图片

引用Maven Plugin

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

            
                com.qianlingo
                datetime
                1.0-SNAPSHOT
            

引用的插件显示
Maven学习笔记之如何编写Maven项目的Plugins插件_第7张图片

结尾

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

你可能感兴趣的:(maven,java)