zoukankan      html  css  js  c++  java
  • Maven生命周期

    简单了解

    Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。

    Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。

    Maven内置3个生命周期(Clean 、Default Site 

    1、Clean Lifecycle 在进行真正的构建之前进行一些清理工作。(项目的清理)

    2、Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。(项目的部署)

    3、Site Lifecycle 生成项目报告,站点,发布站点。(项目站点文档的创建)

    每个生命周期包含一些阶段(phase),阶段是有顺序的,后面的阶段依赖于前面的阶段。

    clean生命周期:清理项目,包含三个phase。

    1. pre-clean:执行清理前需要完成的工作
    2. clean:清理上一次构建生成的文件
    3. post-clean:执行清理后需要完成的工作

    default生命周期:构建项目,重要的phase如下。

    1. validate:验证工程是否正确,所有需要的资源是否可用。
    2. compile:编译项目的源代码。  
    3. test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
    4. Package:把已编译的代码打包成可发布的格式,比如jar。
    5. integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
    6. verify:运行所有检查,验证包是否有效且达到质量标准。
    7. install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
    8. Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

    site生命周期:建立和发布项目站点,phase如下

    1. pre-site:生成项目站点之前需要完成的工作
    2. site:生成项目站点文档
    3. post-site:生成项目站点之后需要完成的工作
    4. site-deploy:将项目站点发布到服务器

    组成maven单个生命周期的元素:

    组成maven生命周期的元素被称为phase,每一个生命周期会有多个phase,每个phase都是就相当于一个执行节点,而每个执行节点中又包含多个实际执行maven任务的goal。同时,每个生命周期中所有的phase都是顺序执行的,也就是说当你执行后面的phase,这个phase之前的所有phase都会被执行,就拿最简单的mvn clean install这个maven 命令来说,这个命令中的clean phase和install phase分别属于clean生命周期以及default生命周期。

        (1)clean生命周期中包含以下几个phase:pre-clean、clean、post-clean

        (2)default生命周期中包含的生命周期就比较多了,列几个主要的:.....、compile、.....test........、package..........、install、deploy

    看到了吧,当执行命令时会首先执行clean生命周期中的pre-clean和clean(其实是执行clean中的clean:clean goal,这时clean phase默认的goal)。当执行完clean生命周期后就会执行default周期,而命令行中要求执行的是install这个phase,由于maven执行一个生命周期时会顺序执行命令phase之前所有的phase,所以这里会把install phase之前所有的phase都执行完成之后才会执行install(实际是执行这里默认的install:install goal)。

    总结:

    1、maven的生命周期内置3种,clean用来清理项目,default用来构建项目,site用来生成项目站点文档。

    2、每周生命周期都是由一些阶段组成。

    3、一个阶段由插件目标组成。

    4、一些阶段默认绑定着插件目标。

    5、pom中的packaging标签的值对应着不同的阶段来构建项目。

  • 相关阅读:
    mysql 数据类型总结
    #微信小程序子传父 #小程序子组件向父组件传值 小程序子组件触发父组件中的事件
    #最近看到了一个写的很棒的系列文章专栏
    《MySQL45讲》读书笔记(四):索引
    《MySQL45讲》读书笔记(六):数据库事务概述
    《MySQL45讲》读书笔记(一):三大日志概述
    Java基础篇(05):函数式编程概念和应用
    数据采集组件:Flume基础用法和Kafka集成
    架构设计:数据服务系统0到1落地实现方案
    Java基础篇(04):日期与时间API用法详解
  • 原文地址:https://www.cnblogs.com/weibanggang/p/9695114.html
Copyright © 2011-2022 走看看