Maven 生命周期

Maven 生命周期

 

除了坐标、依赖以及仓库之外,Maven 另外两个核心概念是生命周期和插件。Maven 的生命周期是抽象的,其实际行为都由插件来完成。两者协同工作,密不可分。

 

1. Maven 生命周期是什么

 

    在 Maven 出现之前,项目构建的生命周期就已经存在,软件开发人员每天都对在项目进行清理、

    编译、测试及部署。虽然都是构建工作,却有着各式各样的构建方式。满足自身的需求即可,

    换个项目就需要重头再来。

 

    a) 定义

          Maven 的生命周期就是为了所有的构建过程进行抽象和统一。

 

    b) 内容

          Maven 从大量项目和构建工具中学习和反思,然后总结了一套高度完善的、易扩展的生命周期。

          几乎所有项目的构建,都能映射到这样一个生命周期上。

          i.   清理

          ii.  初始化

          iii. 编译

          iv. 测试

          v.  打包

          vi. 集成测试

          vii. 验证

          viii. 部署

          ix.  站点生成

 

    c) 声明周期是抽象的

          Maven 的生命周期是抽象的,生命周期本身不做任何实际的工作,实际的任务都交由插件来完成,

          类似设计模式中的模版方法模式。

 

   d) 插件机制

          Maven 的每个构建步骤都可以绑定一个或者多个插件行为,

          而且 Maven 为大多数构建步骤编写并绑定了默认插件。

 

   e) 标准化、结构化、灵活化

          Maven 的生命周期和插件机制,一方面保证了所有 Maven 项目有一致的构建标准,

          另一方面通过默认插件简单和稳定了实际项目的构建。

          并且也可以自行编写插件来自定义构建行为,最大灵活化。

 

2. 三套生命周期

 

    Maven 有三套相互独立的生命周期,每个生命周期包含一些阶段,这些阶段也是有顺序的,

    并且后面的阶段依赖于前面的阶段。但三套生命周期本身是相互独立的。

    可以调用任何一个生命周期的某个阶段,而不对其他生命周期产生任何影响。

 

    a) clean生命周期

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

           i.   pre-clean

                执行一些清理前需要完成的工作。

           ii.   clean

                清理上一次构建生成的文件。

           iii.  post-clean

                执行一些清理后需要完成的工作。

 

    b) default生命周期

           定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。

           包含以下阶段。基本上,根据名称我们就能猜出每个阶段的用途。

          (关于其它阶段的解释,请参考

                   http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

            i.   validate

            ii.  initialize

            iii. generate-sources

            iv. process-sources

            v.  generate-resources

            vi. process-resources

                复制并处理资源文件,至目标目录,准备打包。

            vii. compile

                 编译项目的源代码。

            viii. process-classes

            ix.  generate-test-sources

            x.   process-test-sources

            xi.  generate-test-resources

            xii. process-test-resources

                 复制并处理资源文件,至目标测试目录。

            xiii. test-compile

                  编译测试源代码。

            xiv. process-test-classes

            xv.  test

                  使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

            xvi. prepare-package

            xvii.package

                  接受编译好的代码,打包成可发布的格式,如 jar 。

            xviii.pre-integration-test

            xix.  integration-test

            xx.   post-integration-test

            xxi.  verify

            xxii. install

                  将包安装至本地仓库,以让其它项目依赖。

            xxiii.deploy

                  将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

 

     c) site生命周期

           生成项目报告,站点,发布站点。

           i.   pre-site

               执行一些在生成项目站点之前需要完成的工作。

           ii.  site

               生成项目站点文档。

           iii. post-site

               执行一些在生成项目站点之后需要完成的工作。

           iv. site-deploy

                将生成的项目站点发布到服务器上。

 

     d) 总结

            i.   clean

                 mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,

                 它之前的所有阶段都会被运行,也就是说,mvn clean 等同于 mvn pre-clean clean ,

                 如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。

                 这是Maven很重要的一个规则,可以大大简化命令行的输入。

            ii.  site

                这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,

                这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。

            iii. 切记

                记住,运行任何一个阶段的时候,它前面的所有阶段都会被运行,

                这也就是为什么我们运行mvn install 的时候,代码会被编译,测试,打包。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值