【Java工具开发】Maven插件开发之基础篇(一)

作者:悠悠做神仙

来源: 恒生Light云社区

之前做了一款Maven插件,主要是用来扫描项目的代码调用链,并根据需求生成脑图,以及做一些关于项目信息的维护。因为是扫描代码工程,所以采取插件的方式是最合适的。

趁热,给大家分享一波关于Maven插件开发的内容。

本次分享主要分为两部分,首先是本篇的Maven基础篇,主要是基本概念、生命周期、插件目标、常用插件和命令等,虽然大家常用Maven插件,但是对于其中的一些原理,可能大家不是很清楚,同时这些基础,也是做Maven插件开发之前需要了解的。了解完基础后,我们便开始上手进行Maven插件的开发,另外一篇会手把手教大家开发一个简单的Maven插件。

基础篇分享内容的导航:

1、Maven基本概念

2、Maven生命周期

3、Maven生命周期与插件目标

4、Maven相关命令

5、Maven常用插件

1、Maven基本概念

Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。---来自【百度百科】

官网 概念:

Apache Maven 是一个软件项目管理和理解工具。基于项目对象模型(POM) 的概念,Maven 可以从一条中央信息中管理项目的构建、报告和文档。

Dingtalk_20210731160350.jpg

还记得以前,在没有Maven之前,用eclipse工具进行开发的时候,最痛苦的莫过于关于依赖包的处理,由于缺包、包版本不一致、包冲突等问题引起的,需要一系列导包操作,真是苦不堪言:kelian:,需要先下载依赖包,再手动导入,既没效率也容易引发其他问题。后来,Maven出来了,在配置好Maven的环境变量后,大家通过维护项目的pom.xml文件,就可以实现对于项目相关依赖的导入及导出操作,简单快捷!

2、Maven生命周期

关于Maven生命周期,主要是存在三个标准的周期:

clean default site ,分别用于清理项目、构建项目、生成项目站点,而在一个生命周期中通常又会包含若干个阶段( phase )。

以下是一张典型的Maven构建( build )生命周期的图:

图片1.png

为了完成一个default生命周期,这些阶段(包括未在上面罗列的阶段)会被按顺序执行。

所以,就像图中compile是一个阶段,test也是一个阶段,把这些阶段按照一定顺序组合起来,就是生命周期的概念。

执行顺序

Maven通过将插件的目标与阶段进行绑定,可能一个目标绑定多个阶段或者不绑定。

那么,没有绑定到阶段的目标,可以单独调用触发。这些目标的执行顺序取决于调用目标和构建阶段的顺序。

clean 和 pakage 是构建阶段, dependency:copy-dependencies 是目标。

命令: mvn clean dependency:copy-dependencies package

这里的 clean 阶段将会被首先执行,然后 dependency:copy-dependencies 目标会被执行,最终 package 阶段被执行。

如果在调用生命周期的时候,想看到每个阶段的情况,可以参考附件【打印default生命周期配置】、【打印clean生命周期配置】,加到pom文件,调用一下命令查看一下即可。

3、Maven生命周期与插件目标

不过,生命周期只是一个抽象概念,一个生命周期按照顺序分为很多阶段( phase ),而每个阶段( phase )到底做什么,则是通过绑定不同的插件( goal )目标实现。

构建阶段( phase )由插件目标( goal )构成!

所以,真正在干活的其实是插件,调用插件不同的目标( goal )去实现不同的需求。

如图所示:

一个插件可以有很多的目标( goal ),每个阶段通过绑定插件的不同( goal ),来实现每个阶段( phase )要做的事情。

Dingtalk_20210731163609.jpg

就拿打包来看,如图所示,我们可以看到对应的阶段所绑定的插件目标。

图片3.png

4、Maven相关命令

关于插件命令格式

阶段: mvn 阶段名

例如: mvn clean mvn install

目标: mvn 插件名:目标名

例如: mvn dependency:tree

如图,idea截图的部分maven指令提示。

图片5.png

当然,有些插件是有默认 goal ,也就是说, mvn 插件名 ,会执行默认 goal

命令参数

-D 传入属性参数

-P 使用pom中指定的配置

-e 显示maven运行出错的信息

-o 离线执行命令,即不去远程仓库更新包

-X 显示maven允许的debug信息

-U 强制去远程参考更新snapshot包

5、Maven常用插件

Maven官方插件列表:

http :// maven.apache.org/plugins/index.html

Dingtalk_20210731165423.jpg

  • maven-compiler-plugin :编译插件
  • maven-jar-plugin :打成jar包插件
  • maven-source-plugin :打包源码插件
  • maven-resource-plugin : 处理项目的资源文件拷贝到输出目录
  • maven-dependency-plugin :处理项目的依赖文件
  • maven-antrun-plugin :可以在maven中运行ant任务
  • duplicates-finder-plugin :查找重复依赖
  • mail-maven-plugin :设置邮件发送

关于Maven的基础就分享到这里,想必大家对Maven又有了一些深入的了解,下面我们将进行实战,开发一款Maven插件! 【Java工具开发】Maven插件开发之实战篇(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值