maven生命周期

生命周期

在maven出现之前,项目构建的生命周期就已经存在了。你可以把他想象成项目构建的一套顺序流程;比如有些是手动进行构建,有些是编写自动化脚本,大家也是各写各的,能满足自身的项目即可,换个项目就需要重头再来

maven将这套生命周期抽象化,总结了一套高度完善,易扩展的生命周期

可以把他想象成设计模式——模版方法模式,maven只定义了生命周期的算法,本身的工作交由插件来完成,子类可以通过重写其中的方法来控制实际的行为,这样即满足了扩展性,又能够严格控制生命周期的整体结构

三套生命周期

maven有三套相互独立的生命周期:

  • clean生命周期
    pre-clean 执行清理前需要完成的工作
    clean
    post-clean 执行清理后需要完成的工作
  • default生命周期
    validate
    initialize
    generate-source
    process-source 处理项目主资源文件
    generate-resource
    process-resource
    compile 编译项目的主源码
    process-classes
    generate-test-source
    process-test-source
    generate-test-resource
    process-test-resource
    test-compile 编译项目的测试代码
    process-test-classes
    test 使用单元测试框架运行测试
    prepare-package
    package 接受编译好的代码,打包成可发布的格式
    pre-integration-test
    integration-test
    post-integration-test
    verify
    install 安装到本地仓库
    deploy 将最终的包复制到远程的仓库
  • sit生命周期
    pre-site 执行一些在生成项目站点之前需要完成的工作
    site 生成项目的站点文档
    post-site 执行一些在生成项目站点之后需要完成的工作
    site-deploy 将生成的项目站点发布到服务器上

命令行和生命周期

  • $mvn clean 实际执行了clean生命周期的pre-clean和clean阶段
  • $mvn test 实际执行了default生命周期的validate,initialize等,直到test
  • $mvn clean package 可以联合执行两种类型的生命周期
    命令行和生命周期不是所有阶段都绑定的,比如$mvn clean不会执行post-clean阶段

内置绑定

maven的生命周期与插件相互绑定,用以完成实际的构建任务,具体而言就是生命周期的阶段与插件的目标相互绑定:

  • clean maven-clean-plugin:clean
  • site maven-site-plugin:site
  • compile maven-compile-plugin:compile
    ….
显示 Gitment 评论