Maven的生命周期

Maven的生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。而在执行这些阶段时,实际的工作还是由插件来完成的。

上面我们也说到过,生命周期包含一些阶段,这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交互方式就是调用这些生命周期阶段。

 

   

1. clean生命周期

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

     1pre-clean 执行一些清理前需要完成的工作。

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

     3post-clean 执行一些清理后需要完成的工作。

 

2. default生命周期

       default生命周期定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分,它包含的阶段如下:

       1) validate 验证项目是否正确和所有需要的相关资源是否可用

       2) initialize 初始化构建

       3) generate-sources

       4)   process-sources 处理源代码

       5) generate-resources 

       6)   process-resources 处理项目主资源文件。对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。

       7) compile 编译项目的主源代码

       8) process-classes

       9)   generate-test-sources

       10) process-test-sources 处理项目测试资源文件

       11generate-test-resources

       12)  process-test-resources 处理测试的资源文件

       13test-compile 编译项目的测试代码

       14process-test-classes

       15)  test 使用单元测试框架运行测试,测试代码不会被打包或部署

       16prepare-package 做好打包的准备

       17package 接受编译好的代码,打包成可发布的格式

       18)  pre-integration-test

       19)  integration-test

       20)  postintegration-test

       21)  verify

       22)  install 将包安装到Maven本地仓库,供本地其他Maven项目使用

       23deploy 将最终的包复制到远程仓库,供其他开发人员和Maven项目使用


3. site生命周期

      site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:

      1pre-site 执行一些在生成项目站点之前需要完成的工作

      2site 生成项目站点文档

      3post-site 执行一些在生成项目站点之后需要完成的工作

      4site-deploy 将生成的项目站点发布到服务器上

 

用户在mvn命令后可以指定三个生命周期中的任何阶段,则Maven会按以下逻辑执行:首先会得到该阶段所属生命周期,从该生命周期中的第一个阶段开始按顺序执行,直至该阶段本身。例如执行mvnclean命令会依次执行clean生命周期中的pre-clean阶段及clean阶段。mvn命令后可以指定多个阶段,Maven会按照输入的顺序依次执行,每次执行都会按照之前描述的逻辑执行


二、projectobject Model

 

  • pom是一个xml,是maven工作的基础,执行任务时,maven会到项目根目录下读取pom.xml获得需要的配置信息
  • pom文件中包含了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本、成员)、项目的依赖、插件和goalbuild选项等等
  • pom是可以继承的,通常对于一个大型的项目或是多个module的情况,子模块的pom需要指定父模块的pom

 

三、Artifact & Repositories

  • Artifact:一个项目将要产生的文件,可以是jar文件,源文件,二进制文件,war文件,甚至是pom
  • Repositories是用来存储Artifact
  • Repositories分为本地仓库和远程仓库,远程仓库是指远程服务器上用于存储Artifact的仓库,本地仓库是指本机存储Artifact的仓库

 

 

四、Maven坐标

  • Maven坐标是一组可以惟一标识构件的三元组值
    • groupId,代表构件的实体或组织例如:org.inspur.loushang
    • artifactId,实际的构件的名称,例如framework
    • version,该构件件的版本号
    • packaging :定义Maven项目打包的方式,首先,打包方式通常与所生成构件的文件扩展名对应,如上例中的packagingjar,最终的文件名为my-app-0.0.1-SNAPSHOT.jar。也可以打包成war, ear等。当不定义packaging的时候,Maven 会使用默认值jar

       

      classifier该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为my-app-0.0.1-SNAPSHOT.jar,该项目可能还会通过一些插件生成如my-app-0.0.1-SNAPSHOT-javadoc.jar,my-app-0.0.1-SNAPSHOT-sources.jar, 这样附属构件也就拥有了自己唯一的坐标



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值