我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Maven3.x 插件开发入门

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Maven3.x 插件开发入门

  1、创建插件项目:(项目原型选择插件类型)

  11.png

  2、Artifact Id 以xxx-maven-plugin命名,如:gr-maven-plugin,下面Version的内容无所谓。

  

  3、创建完毕之后的结构是这样:

  

  4、修改pom.xml文件,加上2个依赖:分别是maven-plugin-api和maven-plugin-annotations,前者是插件开发API,后者是插件中使用的注解定以的包,注意打包方式为:<packaging>maven-plugin</packaging>。完整的pom.xml文件如下,一定要把自动生成那些没用的东西删掉,只留下下面的内容,否则运行插件的时候有可能报错。


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.mook.plugin</groupId>
    <artifactId>gr-maven-plugin</artifactId>
    <version>1.0-RELEASE</version>
    <packaging>maven-plugin</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <version>2.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugin-tools</groupId>
            <artifactId>maven-plugin-annotations</artifactId>
            <version>3.2</version>
            <scope>provided</scope>
        </dependency>
    </dependencies></project>


  5、删掉默认的包,自己新建一个包com.mook.plugin.gr,在这个包下面创建一个类叫做Car,继承AbstractMojo类。重写里面的execute方法。如下:


@Mojo(name = "drive")public class Car extends AbstractMojo {

    @Override    public void execute() throws MojoExecutionException, MojoFailureException {
        System.out.println("Car drive...");
    }

}


  6、这样插件就开发完成了。我们将插件install到本地仓库。然后在项目组引入,可以是在本插件项目中引入,也可以在其他项目中引入。


    <build>
        <plugins>
            <plugin>
                <groupId>com.mook.plugin</groupId>
                <artifactId>gr-maven-plugin</artifactId>
                <version>1.0-RELEASE</version>
            </plugin>
        </plugins>
    </build>


  7、使用eclipse的Maven插件来运行,这里的Maven插件实质Eclipse的Maven插件,而不是Maven自己的插件。如下:

  

  8、输出结果:Car drive...结果显然是正确的。

  

  9、这里来解释下里面有几个细节。

    1、插件artifactId为什么使用xxx-maven-plugin(或者xxx-plugin-maven),这个是约定的,如果这样命名,在启动插件的时候就可以像上面那样gr:drive。否则就的把gr改成groupId:artifactId:version:xxx这种方式,很不方便,当然也有另外的方式处理,在settings文件里面增加pluginManageMent内容,也能实现简化写法。(这个地方改一下,在我们的pom.xml文件中,plugins下面的maven-plugin-plugin中的<goalPrefix>标签下是可以配置这个前缀名称的,比如我这里配置co,那么启动就是co:drive),如下:


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-plugin-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <goalPrefix>co</goalPrefix>
                    <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
                </configuration>
                <executions>
                    <execution>
                        <id>mojo-descriptor</id>
                        <goals>
                            <goal>descriptor</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>help-goal</id>
                        <goals>
                            <goal>helpmojo</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>


 

    2、注解@Mojo是必须要的,这是定义插件对象的启动方法,由于该类只有一个方法,所以启动方法和启动类是一致的。在Maven 3之前是使用注释注解:@goal xxx这种方式。现在已经不使用这种方式了。

    3、我们平时在使用Maven的各种插件的时候往往都能在配置文件中传入属性的值,比如tomcat-maven-plugin插件我们可以随意指定tomcat的端口号。这里插件的处理方式是在Car类中定义一些属性,比如下面这样。然后我们重新将插件install到本地仓库。再次运行。


@Mojo(name = "drive")public class Car extends AbstractMojo {
    
    @Parameter(defaultValue = "8080")    private Integer port;
    
    @Override    public void execute() throws MojoExecutionException, MojoFailureException {
        System.out.println("Car drive...");
        System.out.println(port);
    }

}


    输出结果:

    

    那么,在插件的配置中增加Configuration标签,加上子标签<port>,如下:


            <plugin>
                <groupId>com.mook.plugin</groupId>
                <artifactId>gr-maven-plugin</artifactId>
                <version>1.0-RELEASE</version>
                <configuration>
                    <port>8090</port>
                </configuration>
            </plugin>


    那么,结果就是8090,这就是插件的参数设置方式。

    

  10、到这里基本上就介绍完了。关于插件的运行,关系到Maven的生命周期,阶段和目标这几个概念。这是另外一个话题了。



在POM配置Maven plugin提示错误“Plugin execution not covered by lifecycle configuration”的解决方案

eclipse在其POM文件的一处提示出错如下:

Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor (execution: default-descriptor, phase: generate-resources)pom.xml/gr-maven-pluginline 92Maven Project Build Lifecycle Mapping Problem

 

这表示m2e在其执行maven的生命周期管理时没有定义该插件,所以提示出错,其实m2e对此是提供了扩展机制的,我们可以通过如下操作来消除这个出错提示:

1. 进入Window—>Preferences—>Maven配置,进入Lifecycle Mapping设置项,如下图:

   

   从上图可以看出m2e管理maven生命周期的文件名是lifecycle-mapping-metadata.xml,以及该文件的存放路径

2. 下一步我们就要去相应路径修改lifecycle-mapping-metadata.xml文件,但会发现这个文件在上图中提示的位置并不存在,那么此时就

以到eclipse的安装目录下的plugins下的org.eclipse.m2e.lifecyclemapping.defaults_xxxxxx.jar文件中找到该文件(如下图):

 

通过解压软件可以发现lifecycle-mapping-metadata.xml文件的确在jar包中,把它从jar包中解压出来并放置到前图所示的路径下

3. 打开lifecycle-mapping-metadata.xml文件,把未识别的插件在文件中加入即可:

<pluginExecution>
      <pluginExecutionFilter>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-plugin-plugin</artifactId>
        <goals>
          <goal>descriptor</goal>
        </goals>
        <versionRange>[3.2,)</versionRange>
      </pluginExecutionFilter>
      <action>
        <execute>
          <ignore />
        </execute>
      </action>
    </pluginExecution>

4.修改完成后,需在m2e配置处把“Update Maven projects on startup”选项勾上,并重启eclipse即可消除出错示。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Maven3.x 插件开发入门

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

下载Word文档

猜你喜欢

Maven3.x 插件开发入门

1、创建插件项目:(项目原型选择插件类型)    2、Artifact Id 以xxx-maven-plugin命名,如:gr-maven-plugin,下面Version的内容无所谓。    3、创建完毕之后的结构是这样:    4、修改
2023-01-31

CMS插件开发入门指南:从零到一

,帮助开发者轻松学习CMS插件开发,并提供演示代码,让您快速上手。
CMS插件开发入门指南:从零到一
2024-02-14

CMS插件开发 入门指南:初学者轻松上手

CMS 插件开发入门指南:初学者轻松上手
CMS插件开发 入门指南:初学者轻松上手
2024-02-15

wordpress开发之插件开发初识(wordpress插件开发基础)

首先,你要在wp-content/plugins/下建立一个文件夹,文件夹的名字最好只由字母、数字、“-”和下滑组成。同时,还要在这个文件夹下建立一个同名的php文件。比如你的文件夹名字为my-plugin,则php
2022-06-12

CMS插件开发入门指南:从零开始构建实用的网站扩展

CMS插件开发入门指南,帮助您从零开始构建实用的网站扩展,使您的网站更加强大和灵活。
CMS插件开发入门指南:从零开始构建实用的网站扩展
2024-02-05

前端开发入门

前端开发的前世今生在web1.0时代,前端和后端还没分离开来,前后端职责混乱。Ajax技术的出现,web2.0时代到来,此时前端后端开始分离开来,前后端职责清晰了,前端只要专注于前端开发,后端可以专注于业务逻辑开发,前端与后端的衔接就是AP
2023-06-03

Android NDK开发入门

神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理,通过在线视频教育网站,我初步了解了NDK
2022-06-06

python web开发入门

Ps:2019-1-18修改我其实对这篇文章能有两万+的阅读量感觉很惊讶,占了我博客访问人数的很大一部分,我猜测可能确实是传统的Python web开发的学习方式都是从框架开始,而框架封装过度,让人难以理解背后的原理,最后只是简单的学习AP
2023-01-31

Springboot插件如何开发

本篇内容主要讲解“Springboot插件如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件如何开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初
2023-06-30

Springboot插件怎么开发

本篇内容主要讲解“Springboot插件怎么开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件怎么开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初
2023-07-06

如何开发jQuery插件

今天小编给大家分享一下如何开发jQuery插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。jQuery是javascrip
2023-06-26

MyBatis ORM插件开发基础

MyBatis 是一款广泛使用的 Java 持久层框架,它通过 XML 或注解的方式将 Java 对象与 SQL 语句进行映射,从而简化了数据访问层的开发。插件开发是 MyBatis 扩展功能的一种方式,允许开发者自定义框架的行为。以下是
MyBatis ORM插件开发基础
2024-09-15

web前端:vue开发插件

编程学习网:PEARSONVUE则是PEARSONEDUCATION旗下的从事电子化考试服务的机构,它致力于依靠快捷的互联网,先进的计算机技术及优质的服务为你提供安全、可靠且实用的国际认证考试和安全职业执照及认证程序。其发展速度之迅猛,主要得益于IT技术的飞速发展、得益于IT认证浪潮的推动。
web前端:vue开发插件
2024-04-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录