marven系列4-marven生命周期详解

什么是marven生命周期

构建的生命周期是maven的最核心概念。它的意思就是构建和发布某个特定的artifact(project)的每个阶段是否清晰定义。

对想要构建一个project的开发人员来说,只需要掌握非常少的命令,就可以编译一个maven的项目,pom会保证会生成我们希望的产出结果。

有三个内置的构建周期:default,clean 和site。
default周期处理项目的部署。
clean周期处理项目的清理。
site周期创建项目的站点文档。

每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。

较之于生命周期阶段的前后依赖关系,三套生命周期本身是相互独立的,用户可以仅仅调用clean生命周期的某个阶段,或者仅仅调用default生命周期的某个阶段,而不会对其他生命周期产生任何影响。

以下是百度百科中队maven的使用介绍:

mvn archetype:create创建Maven项目
mvn compile编译源代码
mvn deploy发布项目
mvn test-compile编译测试源代码
mvn test运行应用程序中的单元测试
mvn site生成项目相关信息的网站
mvn clean清除项目目录中的生成结果
mvn package根据项目生成的jar
mvn install在本地Repository中安装jar
mvn eclipse:eclipse生成eclipse项目文件
mvn jetty:run启动jetty服务
mvn tomcat:run启动tomcat服务

正因为我们使用maven的方便,这导致了开发人员只是单纯的使用几个命令,而对Maven不求详细的了解,上述命令中有些有冒号,而有些没有,有冒号的命令是执行指定的插件

default生命周期的阶段

每个生命周期都由一些不同的构建阶段组成。每个构建阶段都是生命周期的一个步骤。

例如,default生命周期由下面的阶段组成:

   1) validate 验证项目是否正确和所有需要的相关资源是否可用
   2) initialize 初始化构建
   3) generate-sources
   4)   process-sources 处理源代码
   5) generate-resources 
   6)   process-resources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
   7) compile 编译项目的主源代码
   8) process-classes
   9)   generate-test-sources
   10) process-test-sources 处理项目测试资源文件
   11)generate-test-resources
   12)  process-test-resources 处理测试的资源文件
   13)test-compile 编译项目的测试代码
   14)process-test-classes
   15)  test 使用单元测试框架运行测试,测试代码不会被打包或部署
   16)prepare-package 做好打包的准备
   17)package 接受编译好的代码,打包成可发布的格式
   18)  pre-integration-test
   19)  integration-test
   20)  postintegration-test
   21)  verify  运行集成测试,以确保项目符合质量标准
   22)  install 将包安装到Maven本地仓库,供本地其他Maven项目使用
   23)deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用

这些构建周期的各个步骤是用来顺序执行,以便完成default的生命周期。这就意味着,一旦使用了default生命周期,maven会首先验证项目,然后编译代码,跑单元测试,打包二进制文件,运行集成测试,验证集成测试,安装验证后的包到本地仓库,然后部署到远端仓库。

clean生命周期

clean生命周期的目的是清理项目,它包含三个阶段:

  • pre-clean 执行一些清理前需要完成的工作。
  • clean 清理上一次构建生成的文件。
  • post-clean 执行一些清理后需要完成的工作。

site生命周期

site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:

  • pre-site 执行一些在生成项目站点之前需要完成的工作
  • site 生成项目站点文档
  • post-site 执行一些在生成项目站点之后需要完成的工作
  • site-deploy 将生成的项目站点发布到服务器上

生命周期与插件

  • Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
  • 每个插件都能实现多个功能,每个功能就是一个插件目标。
  • Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务,例如compile就是插件maven-compiler-plugin的一个插件目标。

参考

Maven生命周期及其他核心概念

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注