Maven的生命周期

来源:互联网 发布:网络词安利是什么意思 编辑:程序博客网 时间:2024/06/05 08:19

maven对项目构建过程分为三套相互独立的生命周期,注意这里说的是“三套”,而且“相互独立”。

  • Clean Lifecycle:在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle:构建的核心部分,编译,测试,打包,部署等等。
  • Site Lifecycle:生成项目报告,站点,发布站点。

生命周期的阶段

每个生命周期都有很多阶段,每个阶段对应一个执行命令。

1.clean生命周期的阶段

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

2.default生命周期的阶段

  • validate
  • generate-sources
  • process-sources
  • generate-resources
  • process-resources:复制并处理资源文件,至目标目录,准备打包。
  • compile:编译项目的源代码。
  • process-classes
  • generate-test-sources
  • process-test-sources
  • generate-test-resources
  • process-test-resources:复制并处理资源文件,至目标测试目录。
  • test-compile:编译测试源代码。
  • process-test-classes
  • test :使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
  • prepare-package
  • package:接受编译好的代码,打包成可发布的格式,如JAR 。
  • pre-integration-test
  • integration-test
  • post-integration-test
  • verify
  • install:将包安装至本地仓库,以让其它项目依赖。
  • deploy:将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

3.site生命周期的内容

  • pre-site执行一些需要在生成站点文档之前完成的工作
  • site 生成项目的站点文档
  • post-site执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy将生成的站点文档部署到特定的服务器上

每个maven命令对应生命周期的某个阶段,例如:mvn clean命令对应clean生命周期的clean阶段。

执行命令会将该命令在的生命周期当中之前的阶段自动执行,比如:mvn clean命令会自动执行pre-clean和clean两个极端。

注意:执行某个生命周期的某个阶段不会影响其他的生命周期。

如果要同时执行多个生命周期的阶段可在命令行输入多个命令,中间以空格隔开,例如:clean package该命令执行clean生命周期的clean阶段和default生命周期的package阶段。

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