• maven生命周期


    一、依赖生命周期

    scope:依赖的生命周期—用来控制项目编译时需要使用哪套classpath,比如测试时会将junit.jar加入编译环境,但是发布产品时又不会将junit.jar加入到编译环境

    •compile:编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。典型的例子就是spring-core,在编译、测试、运行的时候都需要该依赖。
    •test:测试依赖范围。该依赖只对于测试classpath有效,在编译主代码或者运行项目时,此依赖无效。典型的例子就是Junit,它只有在编译测试代码及运行测试的时候才需要。
    •provided:已提供的依赖范围。该依赖对于编译和测试classpath有效,但在运行时无效。典型的例子就是servlet-api,编译和测试项目的时候需要该依赖,但在运行项目的时候,由于容器已经提供,就不需要在maven重复的引入一遍。
    •runtime:运行时依赖范围。该依赖对于测试和运行classpath有效,但在编译主代码时无效。典型的例子是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体JDBC驱动。
    •system:系统范围依赖。该依赖与provided依赖范围完全一致。但是使用system范围的依赖时必须通过systemPath温宿显示指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应该谨慎使用该依赖
    ---------------------------------------------------------------------------------------------

    二、构建的生命周期

    Maven有用三套相互独立的生命周期,他们分别是clean、default、site。

    clean生命周期的目的是清理项目
    default生命周期的目的是构建项目

    site生命周期的目的是建立项目站点

    每个生命周期都包含一些阶段(phase),这些阶段是有序执行的,并且后面的阶段依赖于前面的阶段,用户和maven最直接的交互方式就是调用这些生命周期阶段。

    -------------------------------------------------------------------------------------------------

    clean生命周期

    clean生命周期包含三个阶段:
    1)pre-clean:执行一些清理前需要完成的工作
    2)clean:清理上一次构建生成的文件
    3)post-clean:执行一些清理后需要完成的工作
    我们一般使用clean命令即可

                  default生命周期  

    default生命周期定义了真正构建时需要执行的步骤,它是所有生命周期中最核心的部分,其中包括如下阶段:
    1)validate
    2)initialize
    3)generate-sources
    4)process-sources处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,赋值到项目输出的主classpath目录中。
    5)generate-resources
    6)process-resources
    7)compile编译项目的主源码。一般来说,是编译src/main/Java目录下的java文件至项目输出的主class目录中
    8)process-classes
    9)generate-test-sources

    10)process-test-sources 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,赋值到项目输出的测试classpath目录中。
    11)generate-test-resources
    12)process-test-resources
    13)test-compile编译项目的测试代码。一般来说,是编译src/test/java目录下的java文件至项目输出的测试classpath目录中
    14)process-test-classes
    15)test使用单元测试框架运行项目,测试代码不会被打包或者部署
    16)prepare-package
    17)package接受编译好的代码,打包成可发布的格式,如JAR
    18)pre_integration-test
    19)integration-test
    20)post-integration-test
    21)verify

    22)Install 将包安装到maven本地仓库,供本地其它maven项目使用
    23)deploy将最终的包复制到远处仓库,供其它开发人员和maven项目使用
    注:未说明的大家可以参考官网的解释
    我们一般使用的几个命令:compile、test、package、install、deploy

    site生命周期

    site生命周期的目的是建立和发布项目站点,maven能够基于pom所包含的信息,自动生成一个侯浩的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
    1)pre-site执行一些在生成项目站点之前需要完成的工作
    2)site生成项目站点文档
    3)post-site执行一些在生成项目站点后需要完成的工作
    4)site-deploy将生成的项目站点发布到服务器上

     命令行与生命周期

    从命令行执行maven任务的最主要方式就是调用maven的生命周期阶段。需要注意的是,各个生命周期是相互独立的,而一个生命周期的二阶段是有前后依赖关系的,也就是说后一个生命的执行,那么前面的生命周期必须也要执行。
    1)clean:该命令调用clean生命周期的clean阶段。实际执行的生命周期是pre-clean和clean阶段
    2)test:该命令调用default生命周期的test阶段。实际执行的阶段为validate、initialize等,知道test的所有阶段。这也解释了为什么在测试的时候,项目的代码能够自动的得以编译。
    3)clean install:该命令调用clean生命周期的clean阶段和default生命周期的install阶段。实际执行的阶段为clean生命周期的pre-clean、clean阶段,以及default生命周期的从validate至install的所有阶段。该命令结合了两个生命周期,在执行真正的项目构建之前清理项目时一个很好的建议。
    4)clean deploy site-deploy:该命令调用clean生命周期的clean阶段、default生命周期的deploy阶段,已经site生命周期的site-deploy阶段

  • 相关阅读:
    HDU 2081 手机短号
    HDU 2053 Switch Game
    HDU 2040 亲和数
    HDU 2070 Fibbonacci Number
    redis集群安装2
    redis集群1
    批量更新sql
    centos 6升级 GCC 到4.8
    排序4 -- 插入排序
    排序3--选择排序
  • 原文地址:https://www.cnblogs.com/doit8791/p/5835785.html
Copyright © 2020-2023  润新知