maven是一个项目构建(build)工具。对于一个项目包含清理、编译、测试、打包、发布包、部署等工作,maven把这些工作抽象成一个项目的生命周期,即mavn的生命周期。可以在不使用maven的情况下,实现项目的清理、编译、测试、打包等项目相关操作,可以更好理解maven功能。参考 java自带项目管理命令 。
Maven提供了三个独立的生命周期clean、default、site:
clean生命周期:负责清理项目default生命周期:负责构建项目site生命周期:负责建立项目站点。如下:( 可以参考maven官网 插件 http://maven.apache.org/plugins/index.html)
(1)clean
阶段描述绑定插件的目标pre-clean clean清空target目录mvn-clean-plugin:clean
post-clean(2)default
阶段描述绑定插件validate initialize generate-sources process-sources处理项目的资源文件,把src/main/resources目录下的文件复制输出到classpatch中
process-sources generate-resources process-resources复制主资源文件至主输出目录
mvn-resource-plugin:resources
compile编译项目代码,生成class文件放到lclasspath目录
mvn-compiler-plugin:compile
process-class generate-test-sourcesprocess-test-sources
处理项目的测试资源文件,把src/main/resources目录下的文件复制输出到classpatch中
generate-test-resources
process-test-resources
test使用单元测试框架运行测试,测试代码不会被打包或部署。把class放到测试环境的classpath目录
mvn-surefire-puligin:test
prepare-package
package
打包生成jar,放到target目录
mvn-jar-plugin:jar
pre-integration-test
integration-testpost-integration-test
verify install发布到本地仓库mvn-install-plugin:install
deploy发布到远程仓库mvn-deploy-plugin:deploy
package阶段是 执行打包,并且把依赖的包下载到本地目录,是否maven的依赖都会下载到本地工程目录进行打包?包含三种情况:
默认只对项目生成一个jar,没有第三方依赖通过assembly插件生成一个tar.gz,包含 项目jar和第三方jar。将项目class和第三方jar组成一个 jar文件,使用spring-boot-maven-plugin:repackage。(3)site
阶段描述绑定插件pre-site sit生成项目站点 post-site sit-deploy将生成项目站点发布到服务器