Maven 拥有三套相互独立的生命周期,分别是 clean、default和site,clean 生命周期的目的是清理项目,default 生命周期的目的是构建项目,而site生命周期的目的是建立项目站点,每个生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。

  • clean 生命周期:包含的阶段有 pre-clean、clean 和 post-clean
    • pre-clean:执行一些清理前需要完成的工作
    • clean:清理上一次构建生成的文件
    • post-clean:执行一些清理后需要完成的工作
  • default生命周期:定义了真正构建时说需要执行的所有步骤,是所有生命周期中最核心的部分
    • validate
    • initzlize
    • generate-sources
    • process-sources:处理项目主资源文件,一般来说是对 src/main/resources 目录的内容进行变量替换等工作后,复制到项目输出的主 classpath 目录中
    • generate-resources
    • process-resources
    • compile:编译项目的主源码,一般来说是对 src/main/java 目录的内容进行编译后,复制到项目输出的主 classpath 目录中
    • process-classes
    • generate-test-sources
    • process-test-sources:处理项目测试资源文件,一般来说是对 src/test/resources 目录的内容进行变量替换等工作后,复制到项目输出的测试 classpath 目录中
    • generate-test-resources
    • process-test-resources
    • test-compile:编译项目的测试代码,编译项目的主源码,一般来说是对 src/test/java 目录的内容进行编译后,复制到项目输出的测试 classpath 目录中
    • process-test-classes
    • test:使用单元测试框架运行测试,测试代码不会被打包或部署
    • prepare-package
    • package:接受编译好的代码,打包成可发布的格式,如JAR
    • pre-integration-test
    • integration-test
    • post-integration-test
    • verify
    • install:将包安装到Maven本地仓库,供本地其他 Maven 项目使用
    • deploy:将最终的包复制到远程仓库,供其他开发人员和Maven项目使用
  • site 生命周期
    • pre-site:执行一些在生成项目站点之前需要完成的工作
    • site:生成项目站点文档
    • post-site:执行一些在生成项目站点之后需要完成的工作
    • site-deploy:将生成的项目站点发布到服务器上

从命令行执行
Maven
任务的最主要方式就是调用
Maven
的生命周期阶段,各个生命周期是相互独立的,而一个生命周期的阶段是有前后依赖关系的,下面以一些常见的
Maven
命令为例:

  • mvn
    clean:该命令调用
    clean
    生命周期的
    clean
    阶段,实际执行的阶段为
    pre-clean

    clean
  • mvn
    test:该命令调用
    default
    生命周期的
    test阶段,实际执行的阶段从
    validate

    test
    阶段。
  • mvn
    clean
    install:该命令调用
    clean

    default
    生命周期,实际执行的为
    clean
    生命周期的
    pre-clean

    clean
    阶段;default
    生命周期的
    validate

    install
    阶段

由于
Maven
中主要的生命周期阶段并不多,而常用的
Maven命令实际都是基于这些阶段简单组合而成的。

 
 

笔记:Maven 生命周期与命令行详解的更多相关文章

  1. Scrapy框架的命令行详解【转】

    Scrapy框架的命令行详解 请给作者点赞 --> 原文链接 这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名例子如下: loca ...

  2. [转载]OpenSSL中文手册之命令行详解(未完待续)

     声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...

  3. 7Z命令行详解

    7z.exe在CMD窗口的使用说明如下: 7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za <co ...

  4. 7-zip命令行详解

    一.简介 7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压软件. 主要特征: # 全新的LZMA算法加大了7z格式的压缩比 # 支持格式: * 压缩 / 解压缩:7z, XZ ...

  5. Maven使用教程三:maven的生命周期及插件机制详解

    前言 今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子. 后面还会总结一个 ...

  6. gcc命令行详解

    介绍] ----------------------------------------- 常见用法: GCC 选项 GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但 ...

  7. Gradle之恋-命令行详解

    虽然很多童鞋都必须要用IDE,但有些命令是IDE很难表现出来的,还是命令行返璞归真.本文就带你来剖析Gradle的命令行. 本文不包括试验性(incubating)的选项,如--configure-o ...

  8. vue2.0项目实战(4)生命周期和钩子函数详解

    最近的项目都使用vue2.0来开发,不得不说,vue真的非常好用,大大减少了项目的开发周期.在踩坑的过程中,因为对vue的生命周期不是特别了解,所以有时候会在几个钩子函数里做一些事情,什么时候做,在哪 ...

  9. Fragment 的生命周期及使用方法详解

    Fragment 的基础知识介绍 1.1 概述 1.1.1 特性 By hebang32624 Fragment 是 activity 的界面中的一部分或一种行为.可以把多个 Fragment 组合到 ...

随机推荐

  1. 网络基础Cisco路由交换四

    NAT及静态转换 概述(NAT:网络地址转化) 作用: 通过将内部网络的私有ip地址翻译成全球唯一的公网ip地址, 使内部网络可以连接到互联网等外部网络上. NATA的特性 优点: 节省公有合法ip地 ...

  2. ul+jquery自定义下拉选择框

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 如何在WDM中使用xp系统的DMA用来处理数据

    最近做了一款pci的视频采集卡(H264压缩),由于数据传输量比较大,所有想采用dma来传输数据,刚开始感觉很简单,后来感觉还是困难重重. DMA 验证监控直接内存访问 (DMA) 的使用.随着 Wi ...

  4. dm642的中断

    void fifoint_isr();            extern far void vectors(); void int_init() {  IRQ_resetAll();  IRQ_se ...

  5. Windows PE入门基础知识:Windows PE的作用、命名规则、启动方式、启动原理

    Windows PE的全名是WindowsPreinstallationEnvironment(WinPE)直接从字面上翻译就 是"Windows预安装环境".微软的本意是:Win ...

  6. 图像处理------Canny边缘检测

    一:历史 Canny边缘检测算法是1986年有John F. Canny开发出来一种基于图像梯度计算的边缘 检测算法,同时Canny本人对计算图像边缘提取学科的发展也是做出了很多的贡献.尽 管至今已经 ...

  7. Invalid property 'driver_class' of bean class

    1.错误描述 INFO:2015-05-01 13:06:07[localhost-startStop-1] - Initializing c3p0-0.9.2.1 [built 20-March-2 ...

  8. Linux以GB显示内存大小

    Linux以GB显示内存大小 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -g total used free shared buffers ca ...

  9. IE浏览器兼容的常见问题及解决方案

    常见6个问题及解决方案 1 IE6/IE7对display:inline-block的支持还欠缺 就是我们做导航栏时通常会用到<ul><li>标签去写,在现在一些主流的浏览器中 ...

  10. freemarker中的left_pad和right_pad(十五)

    freemarker中的left_pad和right_pad 1.简易说明 (1)left_pad 距左边 (2)right_pad 距右边 (3)当仅仅只有一个参数时,插入的是空白:当有两个参数时, ...