Maven插件开发步骤

Maven只是一套框架,它的功能基于全部依赖于插件来实现。因此可以通过插件开发来定制Maven。

官方文档

https://maven.apache.org/guides/plugin/guide-java-plugin-development.html

命名要求

Maven 官方的插件命名为:maven-<yourplugin>-plugin
第三方插件命名要求为:<yourplugin>-maven-plugin

实操步骤

第1步:创建一个Maven项目

在这里插入图片描述

第2步:导入依赖

  <dependencies><dependency><groupId>org.apache.maven</groupId><artifactId>maven-plugin-api</artifactId><version>3.0</version></dependency><!-- 插件注解 --><dependency><groupId>org.apache.maven.plugin-tools</groupId><artifactId>maven-plugin-annotations</artifactId><version>3.4</version><scope>provided</scope></dependency></dependencies>

第3步:指定packaging类型 <packaging>maven-plugin</packaging>

<packaging>maven-plugin</packaging>

第4步:引入plugin

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-plugin-plugin</artifactId><version>3.6.0</version><configuration><goalPrefix>zzw</goalPrefix><skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound></configuration>
</plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.3.0</version><configuration><archive><manifest><addDefaultImplementationEntries>true</addDefaultImplementationEntries></manifest></archive></configuration>
</plugin>

1、添加maven-plugin-plugin插件依赖,这个包可以使插件支持JDK1.8以上的版本;
[Ref] Maven插件开发教程
2、addDefaultImplementationEntries 会在生成的jar包的META-INF目录下的MANIFEST.MF文件里生成版本信息
[Ref] maven项目代码获取<version>版本号(通过jar包获取)
[Ref] Maven maven-jar-plugin 配置详情

第5步:编写业务代码

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;@Mojo(name = "sayhi")
public class GreetingMojo extends AbstractMojo {public void execute() throws MojoExecutionException {getLog().info("Hello, world.");}
}

第6步:build一下看看是否有编译问题

在这里插入图片描述

第7步:install 到本地仓库

在这里插入图片描述

第8步:根据maven签名,本地先验证一下

<groupId>org.example</groupId>
<artifactId>test-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>

在这里插入图片描述
[Ref] mvn 插件groupId:插件artifactId[:插件版本]:插件目标名称

第9步:其他项目引入Maven插件的依赖

在这里插入图片描述

第10步:使用方式:直接执行

在这里插入图片描述

第11步:使用方式:把自定义插件绑定在项目的生命周期中

<plugin><groupId>org.example</groupId><artifactId>test-maven-plugin</artifactId><version>1.0-SNAPSHOT</version><executions><execution><id>test1</id><phase>compile</phase><goals><goal>sayhi</goal></goals></execution></executions>
</plugin>

phase标签里面定义要绑定的生命周期,id用于命令,可以自己定义。
在这里插入图片描述
我们可以看到,我们的自定义插件顺利随着compile生命周期执行了。
[Ref] 把自定义插件绑定在项目的生命周期中

参考

Maven - 通过开发插件了解 Maven
Idea开发maven插件
如何开发一个maven插件
Maven插件开发

maven 中的 goal 是什么

遇到的问题

Error resolving version for plugin ‘XXX‘ from the repositories,Plugin not found in any plugin reposi
Failed to parse plugin descriptor for org.apache.maven:maven-plugin-api:4.0.0-alpha-10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316714.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于人工智能的数据库工具Chat2DB使用

文章目录 前言Chat2DB介绍Chat2DB地址下载安装 Chat2DB配置Chat2DB使用1、自然语言转sql2. SQL解释3. SQL优化4. SQL转换 写在最后 前言 随着人工智能的发展&#xff0c;各行各业都出现了不少基于AI的工具来提升工作效率。就连国内的各个大厂也都在基于大模型开发自己的产品线…

【算法系列 | 11】深入解析查找算法之—插值查找

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第11讲&#xff0c;讲…

计算机毕业论文内容参考|基于区块链技术的电子健康记录系统的设计与实现

文章目录 摘要前言绪论课题背景国内外相关研究课题内容区块链技术介绍系统分析用户需求分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于区块链技术的电子健康记录系统的设计与实现。该系统旨在解决传统电子健康记录系统存在的数据安全性、数据隐私性和数据互操作性…

[⑤Meson]: Build Options构建选项

前言 在2023年末新学习了The Meson build构建系统&#xff0c;作为新一代的构建系统&#xff0c;用起来也非常的“时髦”。在构建代码项目时&#xff0c;可能会有不同编译选项或者数据变量&#xff0c;在编译前由使用者自行根据实际情况选择&#xff0c;Meson提供了一个option…

Qt第一个UI程序设计

在第一个Qt程序的基础上我对ui界面进行设计&#xff0c;点击设计按钮 然后 拖动Label按钮输入想要输入的语句。 运行结果如下图。

快速打通 Vue 3(一):基本介绍与组合式 API

很激动进入了 Vue 3 的学习&#xff0c;作为一个已经上线了三年多的框架&#xff0c;很多项目都开始使用 Vue 3 来编写了 这一组文章主要聚焦于 Vue 3 的新技术和新特性 如果想要学习基础的 Vue 语法可以看我专栏中的其他博客 Vue&#xff08;一&#xff09;&#xff1a;Vue 入…

Elasticsearch:如何使用 Elasticsearch 进行排序

虽然你在唱这首歌时可能会想象圣诞老人&#xff0c;但欧洲民间传说&#xff0c;尤其是阿尔卑斯地区的民间传说&#xff0c;有两个传奇人物圣尼古拉斯和坎普斯。 象征着慷慨和善良的圣尼古拉斯&#xff0c;在 12 月 6 日 为乖巧的孩子们带来礼物和欢乐&#xff01; 相比之下&…

SpringBoot 项目如何生成 swagger 文档

推荐使用 springdoc-openapi 的理由 1、springdoc-openapi 是 spring 官方出品&#xff0c;与 springboot 兼容更好&#xff08;springfox 兼容有坑&#xff09; 2、springdoc-openapi 社区更活跃&#xff0c;springfox 已经 2 年没更新了 3、springdoc-openapi 的注解更接近 …

linux常见基础指令

入门常见基础指令 ls、stat、 pwd 、cd、tree、 whoami、 touch、 mkdir、 rm 、 man、 cp、mv、cat、tac、echo、>、 >>、 < 、more、 less、 head、 tail、date、 cal、 find、 which、alias、whereis、grep、zip与unzip、 tar、bc、uname、xargs... 热键Tab、…

学校安全:这个门禁监控技术,速来码住!

在当今社会&#xff0c;随着城市化的加速和科技的飞速发展&#xff0c;安全问题日益引起人们的关注。在这个背景下&#xff0c;门禁监控系统作为一种重要的安全管理工具&#xff0c;正扮演着越来越关键的角色。 门禁监控系统作为一种先进的安全管理工具&#xff0c;不仅提供了对…

CRM系统如何实现市场销售管理?CRM系统有哪些营销功能

CRM管理系统中的营销管理模块&#xff0c;它的锋芒常被销售管理所掩盖&#xff0c;但对于企业的业务来说同样重要。营销部门虽然不像销售人员一样直接面对客户&#xff0c;却是挖掘线索、商机的重要角色。CRM在市场营销领域的关键功能包括&#xff1a;营销漏斗、客户细分、营销…

xadmin-plus

python之Xadmin-plus是什么&#xff1f; xadmin-plus: xadmin的django3.2版本支持。 Xadmin是一个非常优秀的Django Admin插件&#xff0c;可惜的是已经停止更新。Xadmin-plus对其进行了升级兼容。支持python3.10、Django3.2。 特性 Django Admin直接替换基于Twitter Boots…