iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Maven3.x 插件开发入门
  • 721
分享到

Maven3.x 插件开发入门

插件入门 2023-01-31 03:01:12 721人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

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

  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即可消除出错示。


--结束END--

本文标题: Maven3.x 插件开发入门

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

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

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

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

下载Word文档
猜你喜欢
  • Maven3.x 插件开发入门
      1、创建插件项目:(项目原型选择插件类型)    2、Artifact Id 以xxx-maven-plugin命名,如:gr-maven-plugin,下面Version的内容无所谓。    3、创建完毕之后的结构是这样:    4、...
    99+
    2023-01-31
    插件 入门
  • CMS插件开发入门指南:从零到一
    一、CMS插件开发概述 CMS插件开发是基于CMS系统进行扩展开发,开发出满足特定功能或需求的扩展组件,从而增强CMS系统的功能和适用范围。 二、CMS插件开发环境准备 1. 所需工具 文本编辑器:如Visual Studio Cod...
    99+
    2024-02-14
    CMS 插件开发 入门指南 教程 演示代码
  • CMS插件开发 入门指南:初学者轻松上手
    引言 内容管理系统(CMS)已成为现代网站开发的基石。插件是扩展 CMS 功能的有力工具,可添加新功能、改善用户体验或集成第三方服务。对于初学者来说,学习如何开发 CMS 插件可能看起来令人生畏,但遵循一些简单的步骤和代码示例,它可以变得...
    99+
    2024-02-15
    CMS 插件 开发 入门 初学者
  • 前端开发入门
    前端开发的前世今生在web1.0时代,前端和后端还没分离开来,前后端职责混乱。Ajax技术的出现,web2.0时代到来,此时前端后端开始分离开来,前后端职责清晰了,前端只要专注于前端开发,后端可以专注于业务逻辑开发,前端与后端的衔接就是AP...
    99+
    2023-06-03
  • CMS插件开发入门指南:从零开始构建实用的网站扩展
    1. 了解CMS插件开发的基本概念 在开始开发CMS插件之前,您需要了解一些基本概念: CMS: 内容管理系统,用于管理网站内容的平台,如WordPress、Joomla、Drupal等。 插件: CMS的扩展,用于为CMS添加新功能...
    99+
    2024-02-05
    CMS 插件开发 入门指南 网站扩展 PHP 教程
  • python web开发入门
    Ps:2019-1-18修改 我其实对这篇文章能有两万+的阅读量感觉很惊讶,占了我博客访问人数的很大一部分,我猜测可能确实是传统的Python web开发的学习方式都是从框架开始,而框架封装过度,让人难以理解背后的原理,最后只是简...
    99+
    2023-01-31
    入门 python web
  • 征服 CMS 插件开发:分步技巧和窍门
    ...
    99+
    2024-04-02
  • WordPress插件开发教程1:开发第一个WordPress插件
    一、创建一个插件         第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin。         第二步:进入 my-first-plugin 目录,新建一个PH...
    99+
    2023-09-10
    Wordpress WordPress插件开发教程 WordPress插件开发 WordPress插件教程 WordPress开发教程
  • Android开发入门教程
    当涉及到 Android 开发入门教程时,以下是一个详细的大纲,包含了一些常见的实践和指导: Android 概述    - 介绍 Android 平台的基本概念和特点    - 解释 Android 应用的组成和架构    - 说明 A...
    99+
    2023-09-02
    android
  • PHP扩展开发--入门
    环境介绍:         centos7、php7.4 实现功能:写个简单类,包含name属性和一个say方法; 打开PHP安装的源码包,进入/usr/local/resource/php-7.4.24/ext         执行命令:...
    99+
    2023-10-11
    php 服务器
  • FastAdmin插件开发辅助增强插件
    本人开发的FastAdmin插件开发辅助增强插件 不改变官方的开发习惯,但更丝滑,尽最大的努力生成你想要的代码 非常重要 非常重要 非常重要 写在最前面是为了不要漏了,导致插件没有正常工作。 编写代码...
    99+
    2023-09-01
    php 数据库 安全
  • 安卓开发入门基础
    文章目录 一、APP的运行环境:二、APP的开发语言1.java2.Kotlin3.C/C++4.XML 三、APP的数据库四、APP的工程结构配置模块级别的build.gradle清...
    99+
    2023-09-15
    android
  • 如何开发MyBatis插件
    本篇内容介绍了“如何开发MyBatis插件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.MyBatis...
    99+
    2024-04-02
  • 如何开发jQuery插件
    今天小编给大家分享一下如何开发jQuery插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。jQuery是javascrip...
    99+
    2023-06-26
  • Springboot插件怎么开发
    本篇内容主要讲解“Springboot插件怎么开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件怎么开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初...
    99+
    2023-07-06
  • Springboot插件如何开发
    本篇内容主要讲解“Springboot插件如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件如何开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初...
    99+
    2023-06-30
  • 安卓Android开发快速入门
    配合天哥视频食用更佳:【天哥】Android开发视频教程最新版 Android Studio开发 UI组件(控件) 布局管理器 LinearLayout(线性布局) 可嵌套 最常用属性 id 起标记布局的作用 layout_width [w...
    99+
    2023-08-19
    java
  • 如何入门Go语言开发?
    如何入门Go语言开发? Go语言(又称Golang)是一种由Google开发的开源编程语言,它具有快速编译、静态类型、并发编程等特点,适用于开发高性能的后端服务、网络应用、云计算等领域...
    99+
    2024-04-02
  • Flutter插件开发-(进阶篇)
    一、概述 Flutter也有自己的Dart Packages仓库。插件的开发和复用能够提高开发效率,降低工程的耦合度,像网络请求(http)、用户授权(permission_handler)等客户端开发常用的功能模块,我们只需要引入对应插件...
    99+
    2023-09-03
    android flutter android studio
  • 微信公众号开发入门
    实在是太折腾,太难懂了。也太坑了。 下面是这几天来,有关微信公众号的工作总结。算不上全面,只是作为一个初学者的记录,仅以备忘。 一、微信公众号开发,开发什么? 公众号与小程序不同。小程序类似手机APP...
    99+
    2023-09-03
    微信 小程序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作