文章目录
生命周期
Maven 定义了三个类别的生命周期:
- 清理工作的生命周期:Clean
- 构建和部署工作的生命周期:Default
- 创建站点工作的生命周期:Site
Maven 的每个生命周期内部,又细分成多个执行阶段
每个生命周期间是独立的,但是同一生命周期内的阶段是有顺序的,当一个阶段执行时,在它前面的所有同一生命周期的阶段都会被执行,比如我们执行 mvn post-clean
那么 pre-clean
和 clean
两个阶段也会被自动执行
Maven 只是定义了这些执行阶段,并没有对其具体实现,所有的实现都是由插件来提供,Maven 只是起到了调用作用,和一点点的规范作用,为啥说只是一点点呢,比如 Maven 定义 clean 阶段的本意是想让插件实现时做清理操作,但是插件实现时偏偏在 clean 阶段做了打包处理,那也没有办法
Clean 生命周期内部阶段,按阶段顺序列举
阶段名称 | Maven 建议插件实现该阶段时的处理 |
---|---|
pre-clean | 清理前的处理 |
clean | 真正的清理处理 |
post-clean | 清理后的处理 |
Default 生命周期内部阶段,只列举核心阶段,按阶段顺序列举
阶段名称 | Maven 建议插件实现该阶段时的处理 |
---|---|
validate | 校验项目的正确性 |
compile | 编译项目中 src=>main 和 src=>test 目录下的源代码 |
test-compile | 编译项目中 src=>test 目录下的源代码 |
test | 执行 test-compile 编译后的二进制文件 |
package | 生成目标包,jar war 等 |
install | 将生成的包安装到本地仓库 |
deploy | 将生成的包安装到远程仓库 |
Site 生命周期内部阶段,按阶段顺序列举
阶段名称 | Maven 建议插件实现该阶段时的处理 |
---|---|
pre-site | 生成站点文档前的处理 |
site | 真正生成站点文档的处理 |
post-site | 生成站点文档后的处理 |
site-deploy | 将站点文档部署到服务器的处理 |
执行 Maven 生命周期的命令
执行 Maven 生命周期的命令格式是:mvn 阶段名
,比如:mvn clean
,就会执行与 clean 阶段
绑定的插件功能(同一阶段可以绑定多个插件,运行时都会被执行),注意:生命周期命令必须在有 pom.xml
的路径下运行
自定义 Maven 插件
先看一下执行插件的命令 mvn 插件名:目标名
插件名和目标名
插件名:
插件名与我们自定义插件工程的 <artifactId>
息息相关,所以 <artifactId>
不能乱起,需要满足规则:
- ${name}-maven-plugin
- maven-${name}-plugin
<artifactId>
必须满足上面两个规则中的一个,而 ${name} 部分就会自动变成我们的插件名,
比如 artifactId 是 ares5k-maven-plugin
,那么我们的插件名就是 ares5k
目标名:
每个自定义插件中,可以定义多个功能,每个功能需要用目标名来标识,后面用命令调用插件的时候,需要指定目标名来明确具体调用插件中的哪一个功能,大概原理如下图: