Maven项目构建基本结构

当我们构建一个maven项目时,如mvn clean install,会根据maven lifecycle(生命周期)以及传入的phase(阶段)或goal(目标)对项目进行编译打包。
lifecycle,phase和goal的基本关系如下图
maven lifecycle, plugin, phase以及goal

maven生命周期

maven项目中内置了三个常用的lifecycle

生命周期(lifecycle) 描述
default 构建的核心部分,进行项目的编译,测试,打包,部署等
clean 项目构建之前对项目进行一些基本的清理工作
site 生成项目报告,站点等

default生命周期

阶段(phase) 描述
validate 验证项目是否正确以及一些必须信息是否齐全
compile 编译项目代码
test 使用测试框架对测试用例进行测试
package 使用编译的文件对项目进行打包
verify 与其他系统进行集成测试
install 将打包好的package安装到本地仓库
deploy 将打包好的package拷贝到远程仓库

clean生命周期

阶段(phase) 描述
pre-clean 做清理之前的一些工作
clean 清除之前build生成的文件
post-clean 做一些后续的清理工作

site生命周期

阶段(phase) 描述
pre-site 做生成站点文档之前的一些工作
site 生成站点文档
post-site 站点文档生成之后做一些其他必须的工作
deploy-site 将站点文档部署到远程服务器

阶段phase

对于部分阶段(phase),我们对其绑定了某些目标(goal),但我们调用相应的阶段时,会执行相应的目标。阶段与目标自动绑定关系如下表
1.clean生命周期相关

阶段(phase) 绑定目标(plugin:goal)
clean clean:clean

2.default生命周期相关
a.打包类型为ejb / ejb3 / jar / par / rar / war

阶段(phase) 绑定目标(plugin:goal)
process-resources resources:resources
compile compiler:compile
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
package ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war
install install:install
deploy deploy:deploy

b.打包类型为ear

阶段(phase) 绑定目标(plugin:goal)
generate-resources ear:generate-application-xml
process-resources resources:resources
package ear:ear
install install:install
deploy deploy:deploy

c.打包类型为pom

阶段(phase) 绑定目标(plugin:goal)
package
install install:install
deploy deploy:deploy

3.site生命周期

阶段(phase) 绑定目标(plugin:goal)
site site:site
site-deploy site:deploy

goal

goal是真正执行任务的地方,从代码层面上来说就是每个goal即对应一个对于AbstractMojo类的实现类。而不同的plugin中可以定义1个或多个AbstractMojo类的实现类,即一个plugin可对应1个或多个goal。
具体关系可见下图
maven lifecycle, plugin, phase以及goal

插件( plugin)

通过上图我们知道一个plugin即我们对应的一个maven相关的jar包,而每个plugin中包含了一个或多个目标(goal),每个目标(goal)即为一个对于AbstractMojo的实现类.

maven构建命令

当我们通过mvn --help获取帮助时,我们发现mvn的用法为mvn [goals] [phases],即我们可以通过指定phase来执行生命周期(lifecycle中指定phase之前的所有phase,即如果我们指定phase install,则会执行validate, compiler, test, package,verify和install所有的阶段(phase)),如果指定某个一个或多个目标(goal),就会一个一个的执行相应的目标(goal)
maven lifecycle, plugin, phase以及goal

相关文章:

  • 2021-12-26
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
  • 2022-12-23
  • 2021-05-16
猜你喜欢
  • 2022-12-23
  • 2021-12-27
  • 2021-08-24
  • 2021-10-24
  • 2021-08-17
  • 2021-04-11
  • 2022-12-23
相关资源
相似解决方案