Maven-自定义插件

Maven自定义插件

  • 一、背景
  • 二、命名规范
  • 三、插件开发
  • 四、执行插件
    • 1.执行插件
    • 2.简化命令行
      • 2.1 命令格式为 mvn groupId:artifactId:goal
      • 2.2 命令格式为 mvn ${prefix}:goal
  • 五、构建周期执行插件
  • 总结
  • 参考链接:

一、背景

Maven是由一系列用于执行构建任务的插件和一个负责项目处理和构建的核心引擎组成。Maven提供了很多插件,如果现有插件无法满足需求,可以根据特定需求自定义开发插件。

二、命名规范

插件的groupId没有特别约定,插件的artifactId需要符合一定命名规范。
Maven的官方插件artifactId格式为maven-prefix-plugin,非maven官方开发的插件artifactId格式为prefix-maven-plugin。

三、插件开发

每个Mojo是maven插件的一个goal,多个goal会组成一个Maven插件,自定义插件就是开发Mojo工程。Mojo工程中packaging需要定义成maven-plugin类型。

package sample.plugin;import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;/*** Says "Hi" to the user.**/
@Mojo(name = "sayhi")
public class GreetingMojo extends AbstractMojo
{public void execute() throws MojoExecutionException{getLog().info("Hello, world.");}
}

四、执行插件

1.执行插件

将插件添加到项目的pom的plugin依赖中,然后可以通过maven命令行来执行插件。

<project>
...<build><pluginManagement><plugins><plugin><groupId>sample.plugin</groupId><artifactId>hello-maven-plugin</artifactId><version>1.0-SNAPSHOT</version></plugin></plugins></pluginManagement></build>
...
</project>

命令格式如下:

mvn groupId:artifactId:version:goal

例如如果要执行以上插件就需要执行 mvn sample.plugin:hello-maven-plugin:1.0-SNAPSHOT:sayhi

2.简化命令行

2.1 命令格式为 mvn groupId:artifactId:goal

此时会执行本地代码库插件的最新版本。以上命令可以简化为mvn sample.plugin:hello-maven-plugin:sayhi

2.2 命令格式为 mvn ${prefix}:goal

此时maven框架会将 p r e f i x 自动映射成 {prefix}自动映射成 prefix自动映射成{prefix}-maven-plugin(或者maven-${prefix}-plugin),同时需要在setting文件中pluginGroups加入sample.plugin。以上命令可以简化为mvn hello:sayhi。

<pluginGroups><pluginGroup>sample.plugin</pluginGroup>
</pluginGroups>

五、构建周期执行插件

如果想在构建周期过程中需要执行自定义插件,则需要通过配置进行关联。配置如下,这样当构建生命周期执行到compile阶段时,maven会执行自定义插件的goal中sayhi的功能。

  <build><pluginManagement><plugins><plugin><groupId>sample.plugin</groupId><artifactId>hello-maven-plugin</artifactId><version>1.0-SNAPSHOT</version></plugin></plugins></pluginManagement>  <plugins><plugin><groupId>sample.plugin</groupId><artifactId>hello-maven-plugin</artifactId><executions><execution><phase>compile</phase><goals><goal>sayhi</goal></goals></execution></executions></plugin></plugins></build>

总结

主要介绍Maven自定义插件开发、通过命令行执行maven自定义插件、并且将自定义插件与构建周期进行绑定。

参考链接:

1.Maven插件开发

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

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

相关文章

2023.11.22 -数据仓库

目录 https://blog.csdn.net/m0_49956154/article/details/134320307?spm1001.2014.3001.5501 1经典传统数仓架构 2离线大数据数仓架构 3数据仓库三层 数据运营层,源数据层&#xff08;ODS&#xff09;&#xff08;Operational Data Store&#xff09; 数据仓库层&#…

LeetCode39. Combination Sum

文章目录 一、题目二、题解 一、题目 Given an array of distinct integers candidates and a target integer target, return a list of all unique combinations of candidates where the chosen numbers sum to target. You may return the combinations in any order. Th…

新生儿近视:原因、科普和注意事项

引言&#xff1a; 近年来&#xff0c;新生儿近视的发病率逐渐上升&#xff0c;引起了广泛关注。新生儿近视的原因复杂&#xff0c;可能受到遗传、环境和行为等多方面因素的影响。本文将深入解析新生儿近视的原因&#xff0c;提供相关科普知识&#xff0c;并为父母和监护人提供…

线性代数 - 几何原理

目录 序言向量的定义线性组合、张成空间与向量基线性变换和矩阵线性复合变换与矩阵乘法三维空间的线性变换行列式矩阵的秩和逆矩阵维度变换点乘叉乘基变换特征值和特征向量抽象向量空间 序言 欢迎阅读这篇关于线性代数的文章。在这里&#xff0c;我们将从一个全新的角度去探索线…

酒店预订订房小程序源码系统+多酒店入驻 功能齐全 附带完整的搭建教程

随着互联网的快速发展&#xff0c;越来越多的人选择通过在线预订平台预订酒店。为了满足这一需求&#xff0c;我们开发了这个酒店预订订房小程序源码系统。该系统基于先进的云计算技术和大数据分析&#xff0c;旨在为用户提供更加便捷、智能的酒店预订服务。 以下是部分代码示…

排序算法--选择排序

实现逻辑 ① 第一轮从下标为 1 到下标为 n-1 的元素中选取最小值&#xff0c;若小于第一个数&#xff0c;则交换 ② 第二轮从下标为 2 到下标为 n-1 的元素中选取最小值&#xff0c;若小于第二个数&#xff0c;则交换 ③ 依次类推下去…… void print_array(int a[], int n){f…

MySQL 数据库下载

1 最新版 MySQL :: Download MySQL Community Server 2 存档版本(Archived Versions)-历史版本 MySQL :: Download MySQL Community Server (Archived Versions) 3 下载(样例: zip 方式) tip1&#xff1a; 可以下载安装文件的方式&#xff0c;也可以使用压缩包方式&#xff…

es基本语法 (kibana)

#添加 (不添加id默认会生成id) POST /cj/test {"name":"jack","sex":"1","age":12 } #添加 (id为第5个的) POST /cj/test/5 {"name":"jackson","sex":"1","age":12 } #条…

健康饮酒进家庭,国台酒业与碧桂园服务集团达成战略合作

11月19日&#xff0c;碧桂园服务集团与国台酒业集团战略合作发布会暨“健康饮酒进家庭”项目启动仪式在广州举行。 广东省酒类行业协会创会会长朱思旭&#xff0c;广东省酒类行业协会会长彭洪&#xff0c;碧桂园服务集团总裁徐彬淮&#xff0c;碧桂园服务集团酒类业务总经理、广…

便携式自动气象站让你随时随地掌握天气变化

WX-BXQX12 随着科技的发展&#xff0c;人们对气象信息的掌握越来越重要。无论是在日常生活中&#xff0c;还是在农业生产、旅游出行等领域&#xff0c;了解天气变化都显得至关重要。为了满足人们对气象信息的需求&#xff0c;一款名为“便携式自动气象站”的创新产品应运而生。…

SQL入门

DDL /* DDL 对数据库和表进行 CRUD C CREATE 创建 R RETRIEVE 查询 A ALTER 修改 ALTER D DELETE 删除 增删改查 */ -- 对数据库的操作SQL ---------------------------------------------------------------------------- -- 创建数据库 -- 语法格式 CREATE DATABAS…

Java 下载地址

1 地址&#xff1a; Java Downloads | Oracle 2 往下翻(Java 8 和 Java 11) 3 往下翻 (JRE 下载)(JRE 8 为例) 4 跳转到登录(登录账号才可以下载)

suricata识别菜刀流量

一、捕获菜刀流量 payload特征&#xff1a; PHP: <?php eval($_POST[caidao]);?> ​ ASP: <%eval request(“caidao”)%> ​ ASP.NET: <% Page Language“Jscript”%><%eval(Request.Item[“caidao”],“unsafe”);%>数据包流量特征&#xff1a; …

道路建设(最小生成树)

道路建设 题目描述 随着如今社会的不断变化&#xff0c;交通问题也变得越来越重要&#xff0c;所以市长决定建设一些公路来方便各个城市之间的贸易和交易。虽然市长的想法很好&#xff0c;但是他也遇到了一般人也经常头疼的问题&#xff0c;那就是手头的经费有限…… 在规划…

linux printf往文件里面写入内容

printf用于向控制台打印字符串&#xff0c;而这里面的控制台其实是标准输出&#xff0c;fd值为1&#xff0c;故可以用下面代码写文件&#xff1a; int main() {close(1);int i 1;int fd1 open("/chkpnt/log.txt",O_WRONLY | O_CREAT, 0666);printf("i %d\n&…

解密高性能查询!小米亲授:如何轻松查出1000条数据的后十条前7条?

大家好&#xff0c;我是小米&#xff01;今天要跟大家分享一道火辣辣的面试题&#xff1a;在一张表中&#xff0c;如何高性能地查出1000条数据的后十条的前7条&#xff1f;这可是一个考察你数据库查询优化能力的好题目哦&#xff01;废话不多说&#xff0c;让我们直奔主题&…

扩散模型实战(十一):剖析Stable Diffusion Pipeline各个组件

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…

uniapp:录音权限检查,录音功能

1.可以使用&#xff1a;plus.navigator.checkPermission检查运行环境的权限 2.如果是"undetermined"表示程序未确定是否可使用此权限&#xff0c;此时调用对应的API时系统会弹出提示框让用户确认&#xff1a;plus.audio.getRecorder() <template><view cla…

深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法

深圳锐科达SV-X7 sip话机与海康威视摄像头联动设置方法 SIP对讲终端获取设备IP地址方式 通过长按速拨键3秒&#xff08;上电30秒后&#xff0c;即听到提示音后&#xff09;&#xff0c;待喇叭发出急促嘟嘟声&#xff0c;再快速按一下速拨键&#xff0c;设备自动语音播报本机的…

基于Web停车场管理系统的设计与实现【附源码】

基于Web停车场管理系统的设计与实现 摘要&#xff1a;采用MyEclipse2014平台和Java语言开发了一款基于B/S结构的Web停车场管理系统。系统前台采用JSP技术动态生成Web网页&#xff0c;后台采用MVC开发模式降低代码的耦合度、提高代码的重用性。主要包含了系统信息管理、车位信息…