背景:
之前公司开发组织机构插件项目,其是在Jira平台下进行二次开发,默认的项目部署方式是:clean--》install--》start(restart)。一直存在疑问
解析:
第一、生命周期(lifecycle)
每个maven项目的构建是具有生命周期的,而每个lifecycle包含了多个phase。lifecycle一般具有三种构建形式:default lifecycle、clean lifecycle、site lifecycle
1、默认的构建方式:default lifecycle,其定义了一个完整的项目构建的步骤,如下所示:
<phases> <phase>validate</phase> <phase>initialize</phase> <phase>generate-sources</phase> <phase>process-sources</phase> <phase>generate-resources</phase> <phase>process-resources</phase> <phase>compile</phase> <phase>process-classes</phase> <phase>generate-test-sources</phase> <phase>process-test-sources</phase> <phase>generate-test-resources</phase> <phase>process-test-resources</phase> <phase>test-compile</phase> <phase>process-test-classes</phase> <phase>test</phase> <phase>prepare-package</phase> <phase>package</phase> <phase>pre-integration-test</phase> <phase>integration-test</phase> <phase>post-integration-test</phase> <phase>verify</phase> <phase>install</phase> <phase>deploy</phase> </phases>
2、clean lifecycle,主要作用是为了清理项目,以便重新构建部署项目
<phases> <phase>pre-clean</phase> <phase>clean</phase> <phase>post-clean</phase> </phases> <default-phases> <clean> org.apache.maven.plugins:maven-clean-plugin:2.5:clean </clean> </default-phases>
3、site lifecycle,主要作用是建立和发布项目站点
<phases> <phase>pre-site</phase> <phase>site</phase> <phase>post-site</phase> <phase>site-deploy</phase> </phases> <default-phases> <site> org.apache.maven.plugins:maven-site-plugin:3.3:site </site> <site-deploy> org.apache.maven.plugins:maven-site-plugin:3.3:deploy </site-deploy> </default-phases>
第二、插件
Maven将所有项目的构建过程统一抽象成一套生命周期:验证、初始化、生成源代码等,几乎所有项目的构建过程,都可以由这一套生命周期来描述。但maven这个项目构建管理工具是抽象的,它并不能完成任何项目构建的工作,而是映射给其他插件项目来完成这一个一个phase。故当用户有特殊需求的时候,可根据需求定制构建行为,就像开头所说:clean—>install—>start
<phase>validate</phase> <phase>initialize</phase> <phase>generate-sources</phase> <phase>process-sources</phase> <phase>generate-resources</phase> <phase>process-resources</phase> <phase>compile</phase> <phase>process-classes</phase> <phase>generate-test-sources</phase> <phase>process-test-sources</phase> <phase>generate-test-resources</phase> <phase>process-test-resources</phase> <phase>test-compile</phase> <phase>process-test-classes</phase> <phase>test</phase> <phase>prepare-package</phase> <phase>package</phase> <phase>pre-integration-test</phase> <phase>integration-test</phase> <phase>post-integration-test</phase> <phase>verify</phase> <phase>install</phase> <phase>deploy</phase>