maven系列:生命周期

前面我们详细讲解了maven的一大亮点:依赖,maven做为工程大器,还有个特别重要的功能:构建今天我们主要讲解maven的生命周期,maven的生命周期就是对软件项目构建工作的抽象,一个完整的项目构建过程通常包括清理、编译、测试、打包、集成测试、验证、部署等步骤,每个步骤都有具体的任务,而具体任务都交由插件来完成。Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin。用户也可自行配置或编写插件。
maven共有三套完整的生命周期:clean,default,site【每套生命周期独立运行,且都包含多个phase(我们了解为阶段),每个phase会有一个或者多个plugin的goal来实现】
一:生命周期以及包含的phase
1)clean
pre-clean    :执行清理前的工作;
clean    :清理上一次构建生成的所有文件;
post-clean    :执行清理后的工作


2)default
validate:校验这个项目的一些配置信息是否正确
initialize:初始化构建状态,比如设置一些属性,或者创建一些目录
generate-sources:自动生成一些源代码,然后包含在项目代码中一起编译
process-sources:处理源代码,比如做一些占位符的替换
generate-resources:生成资源文件,才是干的时我说的那些事情,主要是去处理各种xml、properties那种配置文件,去做一些配置文件里面占位符的替换
process-resources:将资源文件拷贝到目标目录中,方便后面打包
compile:编译项目的源代码
process-classes:处理编译后的代码文件,比如对java class进行字节码增强
generate-test-sources:自动化生成测试代码
process-test-sources:处理测试代码,比如过滤一些占位符
generate-test-resources:生成测试用的资源文件
process-test-resources:拷贝测试用的资源文件到目标目录中
test-compile:编译测试代码
process-test-classes:对编译后的测试代码进行处理,比如进行字节码增强
test:使用单元测试框架运行测试
prepare-package:在打包之前进行准备工作,比如处理package的版本号
package:将代码进行打包,比如jar包
pre-integration-test:在集成测试之前进行准备工作,比如建立好需要的环境
integration-test:将package部署到一个环境中以运行集成测试
post-integration-test:在集成测试之后执行一些操作,比如清理测试环境
verify:对package进行一些检查来确保质量过关
install:将package安装到本地仓库中,这样开发人员自己在本地就可以使用了
deploy:将package上传到远程仓库中,这样公司内其他开发人员也可以使用了


3)site
pre-site
site    :生成项目的站点文档;
post-site
site-deploy    :发布生成的站点文档


我们来看看上次构建工程的日志,来验证一下
mvn32.png 


二)phase和plugin
默认maven会绑定一些plugin的goal到phase上去,类似resources:resources这种格式,可以解读为:resources这个plugin的resources goal

process-resources
resources:resources
compile
compiler:compile
process-test-resources
resources:testResources
test-compile
compiler:testCompile
test
surefire:test
package
jar:jar或者war:war
install
install:install
deploy
deploy:deploy


site的生命周期是
site
site:site
site-deploy
site:deploy


clean的生命周期是
clean
clean:clean

三)maven的命令行和生命周期
比如,我们运行了maven clean package命令

clean是指的clean生命周期中的clean phase
package是指的default生命周期中的package phase
此时就会执行clean生命周期中,在clean phase之前的所有phase和clean phase,pre clean,clean
同时会执行default生命周期中,在package phase之前的所有phase和package phase


有些命令不执行生命周期的任何一个phase,而是直接指定插件的一个goal
比如mvn dependency:tree,就是直接执行dependency这个插件的tree这个goal,这个意思就是会自动分析pom.xml里面的依赖声明,递归解析所有的依赖,然后打印出一颗依赖树
mvn deploy:depoy-file,就是直接执行deploy这个插件的deploy-file这个goal,这个意思就是说将指定目录的jar包,以指定的坐标,部署到指标的maven私服仓库里去,同时使用指定仓库id对应的server的账号和密码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值