广告
返回顶部
首页 > 资讯 > 精选 >如何使用maven自定义插件开发
  • 508
分享到

如何使用maven自定义插件开发

2023-07-02 09:07:23 508人浏览 薄情痞子
摘要

这篇文章主要介绍了如何使用Maven自定义插件开发的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用maven自定义插件开发文章都会有所收获,下面我们一起来看看吧。Maven 插件的命名规范一般来说,我们会

这篇文章主要介绍了如何使用Maven自定义插件开发的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用maven自定义插件开发文章都会有所收获,下面我们一起来看看吧。

Maven 插件的命名规范

一般来说,我们会将自己的插件命名为 -maven-plugin,而不推荐使用 maven--plugin,因为后者是 Maven 团队维护官方插件的保留命名方式,使用这个命名方式会侵犯 Apache Maven 商标。

什么是 Mojo?

Mojo 就是 Maven plain Old Java Object。每一个 Mojo 就是 Maven 中的一个执行目标(executable Goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的 Java 类。插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。

创建 Mojo 工程

这里,我们使用 idea 作为开发工具进行讲解,创建工程选择 Maven,然后在模板中找到 maven-archetype-mojo,点击下一步,输入对应的参数,如:com.qchery/ekjar-maven-plugin/1.0-SNAPSHOT,最后点击完成即可创建一个简单的 Mojo 工程。

Maven 插件的命名规范

一般来说,我们会将自己的插件命名为 -maven-plugin,而不推荐使用 maven--plugin,因为后者是 Maven 团队维护官方插件的保留命名方式,使用这个命名方式会侵犯 Apache Maven 商标。

什么是 Mojo?

Mojo 就是 Maven plain Old Java Object。每一个 Mojo 就是 Maven 中的一个执行目标(executable goal),而插件则是对单个或多个相关的 Mojo 做统一分发。一个 Mojo 包含一个简单的 Java 类。插件中多个类似 Mojo 的通用之处可以使用抽象父类来封装。

创建 Mojo 工程

这里,我们使用 Idea 作为开发工具进行讲解,创建工程选择 Maven,然后在模板中找到 maven-archetype-mojo,点击下一步,输入对应的参数,如:com.qchery/ekjar-maven-plugin/1.0-SNAPSHOT,最后点击完成即可创建一个简单的 Mojo 工程。

如何使用maven自定义插件开发

创建完成后,工程内会生成对应的 pom.xml 文件。其内容比较简单,与普通 Maven 工程的 pom.xml 基本一致,只是自动添加了对 maven-plugin-api 的依赖,这个依赖里面会包含一些 Mojo 的接口与抽象类,在后续编写具体的 Mojo 时再进行详细讲解。

<dependency>  <groupId>org.apache.maven</groupId>  <artifactId>maven-plugin-api</artifactId>  <version>2.0</version></dependency>

与普通 pom.xml 文件一个重要的不同之处是它的打包方式:

<packaging>maven-plugin</packaging>

简单 Mojo 的创建

工程创建完毕后,我们开始 Mojo 创建之旅,上面提到过 Mojo 是一个简单的 Java 类,那我们创建第一个 Mojo 类用于打印一行输出。

import org.apache.maven.plugin.AbstractMojo;import org.apache.maven.plugin.MojoExecutionException;import org.apache.maven.plugin.MojoFailureException;public class HelloMojo extends AbstractMojo {    public void execute() throws MojoExecutionException, MojoFailureException {        System.out.println("hello world");    }}

观察一下这个类,我们发现它继承了 AbstractMojo 这个抽象类,并实现了 execute() 方法,该方法就是用来定义这个 Mojo 具体操作内容,我们只需要根据自己的需要来编写自己的实现即可。

Mojo 操作的实现我们了解了,那怎么让 Maven 知道这是一个 Mojo 而不是一个普通的 Java 类呢?这里,就需要说一下 Mojo 的查找机制了,在处理源码的时候,plugin-tools 会把使用了 @Mojo 注解或 Javadoc 里包含 @goal 注释的类来当作一个 Mojo 类。在上面的例子中,我们使用了 Javadoc 的方法来声明一个 Mojo。同样我们也可以使用 @Mojo 注解来进行声明:

@Mojo(name = "hello")public class HelloMojo extends AbstractMojo {    public void execute() throws MojoExecutionException, MojoFailureException {        System.out.println("hello world");    }}

使用 @Mojo 注解,我们需要引入一个新包:

<dependency>  <groupId>org.apache.maven.plugin-tools</groupId>  <artifactId>maven-plugin-annotations</artifactId>  <version>3.1</version></dependency>

运行自定义 Plugin

与使用其它插件类似,我们需要在 pom.xml 文件中引入插件:

<build>    <plugins>        <plugin>            <groupId>com.qchery</groupId>            <artifactId>ekjar-maven-plugin</artifactId>            <version>1.0-SNAPSHOT</version>        </plugin>    </plugins></build>

先执行命令:

mvn install

然后执行:

mvn com.qchery:ekjar-maven-plugin:1.0-SNAPSHOT:hello

即可看到输出:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building ekjar-maven-plugin Maven Mojo 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- ekjar-maven-plugin:1.0-SNAPSHOT:hello (default-cli) @ ekjar-maven-plugin ---
hello world
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.249 s
[INFO] Finished at: 2017-03-26T12:59:47+08:00
[INFO] Final Memory: 6M/123M
[INFO] ------------------------------------------------------------------------

缩短执行命令

在刚才运行插件的时候,我们使用全量的插件指引,但这个实在是太长太繁琐了,那我们是否可以缩短我们的执行命令呢?

答案肯定是可以的,如果你想要执行的是你本地库中最新版本的插件,那么你可以删除掉版本号;如果你的命名满足前面提及的两种命令方式,你可以直接使用插件名及 goal 名来运行对应的插件,如:

mvn ekjar:hello

你会得到与之前完全一样的结果。

绑定 Maven 执行周期

你还可以将插件配置为将特定目标,从而附加到构建生命周期中的某个特定阶段。如:

<build>    <plugins>        <plugin>            <groupId>com.qchery</groupId>            <artifactId>ekjar-maven-plugin</artifactId>            <version>1.0-SNAPSHOT</version>            <executions>                <execution>                    <goals>                        <goal>hello</goal>                    </goals>                    <phase>package</phase>                </execution>            </executions>        </plugin>    </plugins></build>

继承AbstractMojo 的类中,参数可以通过命令赋值,例如:

public class MyMojo extends AbstractMojo {        private String message;    public void execute() throws MojoExecutionException, MojoFailureException {        System.out.println("hello world");        getLog().info("hello mymojo : "+message);    }}

其中注释就是maven插件很重要的元数据

执行:

mvn com.handarui.yanquan:yanquan:1.0-SNAPSHOT:echo -Decho.message="The Eagle has Landed"

(MyMojo类中的message 参数的javadoc注释是 echo.message, 通过命令赋值时,需要传入-Decho.message=XXX 这种形式 )

关于“如何使用maven自定义插件开发”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何使用maven自定义插件开发”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何使用maven自定义插件开发

本文链接: https://www.lsjlt.com/news/340949.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用maven自定义插件开发
    目录Maven 插件的命名规范什么是 Mojo?创建 Mojo 工程Maven 插件的命名规范什么是 Mojo?创建 Mojo 工程简单 Mojo 的创建运行自定义 Plugin缩短...
    99+
    2022-11-13
  • 如何使用maven自定义插件开发
    这篇文章主要介绍了如何使用maven自定义插件开发的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用maven自定义插件开发文章都会有所收获,下面我们一起来看看吧。Maven 插件的命名规范一般来说,我们会...
    99+
    2023-07-02
  • 如何为记账系统添加自定义插件功能 - 使用PHP开发自定义插件的方法
    随着业务的发展和需求的多样化,很多企业和个人都选择使用记账系统来管理财务和记账工作。然而,随着时间的推移,记账系统的功能可能无法完全满足用户的需求,这就需要我们为记账系统添加自定义插件功能,以实现个性化定制和功能扩展。本文将介绍如何使用PH...
    99+
    2023-10-21
    自定义插件 PHP开发 记账系统
  • vue如何自定义插件
    在vue中自定义插件的方法:1.新建vue.js项目;2.使用const方法定义插件对象;3.添加全局方法或属性;4.将插件添加到window对象;5.使用Vue.use()方法调用;具体方法如下:首先,在vue-cli中创建一个vue.j...
    99+
    2022-10-22
  • ASP.NET如何自定义控件开发
    这篇文章主要为大家展示了“ASP.NET如何自定义控件开发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET如何自定义控件开发”这篇文章吧。该控件的功能如下:显示服务端时间,并不停更新...
    99+
    2023-06-17
  • Mybatis自定义拦截器和插件开发详解
    前言 在Spring中我们经常会使用到拦截器,在登录验证、日志记录、性能监控等场景中,通过使用拦截器允许我们在不改动业务代码的情况下,执行拦截器的方法来增强现有的逻辑。在mybati...
    99+
    2022-11-12
  • 怎么使用自定义Maven设置文件
    本文小编为大家详细介绍“怎么使用自定义Maven设置文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用自定义Maven设置文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Mavensettings.x...
    99+
    2023-06-26
  • GitLab的API集成和自定义插件开发技巧
    GitLab的API集成和自定义插件开发技巧引言:GitLab是一个开源的代码托管平台,提供了丰富的API接口供开发者使用,方便进行集成和自定义插件开发。本文将介绍如何进行GitLab的API集成以及自定义插件开发的一些技巧,并提供具体的代...
    99+
    2023-10-22
    集成 GitLab API 自定义插件开发
  • maven helper插件如何使用
    Maven Helper(maven-helper-plugin)是一个用于帮助分析和调试Maven构建的Maven插件。它提供了一...
    99+
    2023-09-27
    maven helper
  • 如何使用vue自定义指令构建拖放插件
    我们都知道html5的拖放特性,利用它可以很方便的实现拖拽和放置功能,比如一些选择类操作的使用场景,让用户去拖拽比鼠标点击更容易接受和理解。今天我们就利用这一特性,结合vue的自定义...
    99+
    2022-11-12
  • JQuery+Bootstrap如何自定义全屏Loading插件
    这篇文章主要为大家展示了“JQuery+Bootstrap如何自定义全屏Loading插件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JQuery+Boots...
    99+
    2022-10-19
  • Android自定义组件:2、如何实现和使用自定义组件、自定义属性
    声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!! 目录 一、前言 二、如何实现自定义组件 步骤1:写 attrs.xml 资源文件 1、...
    99+
    2022-06-06
    属性 自定义属性 Android
  • 如何使用Javascript插件开发
    这篇文章将为大家详细讲解有关如何使用Javascript插件开发,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。该怎样架构?对于架构这个概念,接触的比较少,我的理解,架构就...
    99+
    2022-10-19
  • vue3如何自定义js文件(插件或配置)
    目录vue3自定义js文件举例腾讯防水墙js调用文件vue加载自定义的js文件效果图遇见的问题使用vue3自定义js文件 在vue3中自定义的js文件,如果需要设置全局this.xx...
    99+
    2022-11-13
    vue3自定义js文件 vue3插件 vue3配置
  • Android开发之自定义控件用法详解
    本文实例讲述了Android开发之自定义控件用法。分享给大家供大家参考,具体如下: 今天和大家分享下组合控件的使用。很多时候android自定义控件并不能满足需求,如何做呢?很...
    99+
    2022-06-06
    自定义 自定义控件 android开发 Android
  • js如何自定义瀑布流布局插件
    这篇文章主要介绍js如何自定义瀑布流布局插件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!瀑布流布局是网页中经常采用的一种布局方式,其布局有如下特点:瀑布流布局特点: (1)图文元素...
    99+
    2022-10-19
  • javascript中如何自定义右键菜单插件
    这篇文章将为大家详细讲解有关javascript中如何自定义右键菜单插件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下1.使用方式js文件引入<scri...
    99+
    2022-10-19
  • Knockout应用开发中如何创建自定义绑定
    这篇文章给大家介绍Knockout应用开发中如何创建自定义绑定,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。创建自定义绑定你可以创建自己的自定义绑定,没有必要非要使用内嵌的绑定(像cl...
    99+
    2022-10-19
  • Android自定义控件如何在XML文件中使用自定义属性
    目录前言一、为什么需要自定义控件二、具体步骤1.首先我们创建一个 layout xml文件:2.为自定义控件创建java类:3.在res/values下,新建一个attrs.xml文...
    99+
    2023-05-14
    Android XML自定义属性 Android 自定义控件
  • 在Android开发中使用自定义组合控件的例子
    一、定义一个XML布局文件 setting_item_view.xml <?xml version="1.0" encoding="utf-8"?&...
    99+
    2022-06-06
    自定义 android开发 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作