maven的生命周期

三套生命周期

对于maven的生命周期来说,共有三个相互独立的生命周期,分别是clean、default、site。clean生命周期目的是清理项目,default生命周期目的是构建项目,而site生命周期目的是建立项目站点。

每个生命周期分别包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段。如clean生命周期包含pre-clean、clean和post-clean三个阶段,如果执行clean阶段,则会先执行pre-clean阶段。

较之于生命周期阶段有前后依赖关系,三套生命周期本身是相互独立的,用户可以仅调用clean生命周期的某个阶段,也可以不执行clean周期,而直接执行default生命周期的某几个阶段。

clean生命周期

clean生命周期包含三个阶段,主要负责清理项目,如下:

  • pre-clean:执行一些需要在clean之前完成的工作
  • clean:移除所有上一次构建生成的文件
  • post-clean:执行一些需要在clean之后立刻完成的工作

default生命周期

default生命周期定义了真正构建时所需要执行的所有步骤。当我们执行compile的时候,compile的生命周期就有这么多个步骤:

  • validate:验证
  • initialize:initialize build state, e.g. set properties or create directories.
  • generate-sources:generate any source code for inclusion in compilation.
  • process-sources:process the source code, for example to filter any values.
  • generate-resources:处理资源文件
  • process-resources:复制并处理资源文件,至目标目录,准备打包
  • compile:编译项目源代码
  • process-classes:post-process the generated files from compilation, for example to do bytecode enhancement on Java classes.
  • generate-test-sources:generate any test source code for inclusion in compilation.
  • process-test-sources:process the test source code, for example to filter any values.
  • generate-test-resources create resources for testing.
  • process-test-resources 复制并处理资源文件,至目标测试目录
    test-compile 编译测试源代码
  • process-test-classes: post-process the generated files from test compilation, for example to do bytecode enhancement on Java classes. For Maven 2.0.5 and above.
  • test:使用合适的单元测试框架运行测试,这些测试代码不会被打包或者部署。
  • prepare-package:perform any operations necessary to prepare a package before the actual packaging. This often results in an unpacked, processed version of the package. (Maven 2.1 and above)
  • package:接受编译好的代码,打包成可发布的格式,如jar
  • pre-integration-test:perform actions required before integration tests are executed. This may involve things such as setting up the required environment.
  • integration-test:process and deploy the package if necessary into an environment where integration tests can be run.
  • post-integration-test:perform actions required after integration tests have been executed. This may including cleaning up the environment.
    verify run any checks to verify the package is valid and meets quality criteria.
  • install:将包安装至本地仓库,以让其他项目依赖
  • deploy

命令行与生命周期

从命令行执行maven任务的最主要方式就是调用maven的生命周期阶段。需要注意的是,各个生命周期是相互独立的,而一个生命周期的阶段是有前后依赖关系的。例子如下:
1、$mvn clean :该命令调用clean生命周期的clean阶段。实际执行的阶段为clean生命周期的pre-clean和clean阶段。

2、$mvn test:该命令调用default生命周期的test阶段。实际调用的是default生命周期的validate、initialize等,直到test的所有阶段。

3、$mvn clean install:该命令调换用clean生命周期的clean阶段和default生命周期的instal阶段。

插件绑定

maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标相互绑定,已完成某个具体的构建任务。例如项目编译这一任务,它对应了default生命周期的compile阶段,而maven-compiler-plugin这一插件的compile目标能够完成该任务,因此将他们绑定。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Maven的生命周期 Maven的生命周期是Maven很重要的一个特性。Maven的生命周期定义了一系列的阶段(p...
    熙熙爸爸阅读 1,735评论 0 0
  • Maven命令的输入往往就对应了生命周期、比如mvncompile就表示执行默认生命周期阶段compile。Mav...
    H_Man阅读 1,937评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • 所有项目的构建都是有生命周期的,这个生命周期包括:项目清理、初始化、编译、测试、打包、集成测试、验证、部署、站点生...
    zlcook阅读 7,797评论 0 21
  • Maven聚合模块: 因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块。如果所有的功能、模块都写在一...
    凯哥学堂阅读 4,112评论 0 4