首页 > 技术文章 > Maven学习笔记2

yaoyaoyao123 2021-07-30 13:22 原文

Maven构建生命周期

Maven构建生命周期定义了一个项目构建跟发布的过程

一个典型的Maven构建生命周期是以下几个阶段构成的:

 

 

各个阶段的介绍
阶段 处理 描述
验证validate 验证项目   验证项目是否正确且所有必须的信息是可用的
编译compile 执行编译 源代码编译在此阶段完成
测试test 测试 使用适当的单元测试框架(例如JUnit)运行测试
包装package 打包 创建jar/war等在pom中定义提及的包
检查verify 检查 对集成测试的结果进行检查
安装install   安装 安装打包的项目到本地仓库,以供其他项目使用
部署deploy 部署 拷贝最终的工程包到远程仓库,共享给其他的开发人员和工程

为了完成default生命周期,这些阶段将被顺序的执行。给定上述的生命周期阶段,这意味着当使用默认的生命周期时,Maven将首先验证项目,然后尝试编译源代码,运行这些源代码,打包二进制文件,运行集成色是软件包,验证集成测试,将验证的软件包安装到本地仓库,然后将安装的软件包部署到远程仓库。

同样的,所有过程都是连续的,例如如果使用了install来安装程序,前面就一定执行了编译,测试,打包等过程。

 

Maven的生命周期:

Maven存在三个内置的生命周期:分别为默认生命周期,清洁生命周期,站点生命周期。在默认生命周期处理项目部署,将清洁生命周期处理项目的清理,而网站的生命周期处理你在项目站点的创建。而且这三个生命周期为相互之间独立存在的,不存在顺序执行性。

 

使用构建生命周期来完成构建工作

  通过执行某个生命周期的某个阶段

  执行mvn install命令,将完成validate,compile,test,package,verify,install阶段,并将打包的文件发布到本地仓库中。其中某些带有连字符的阶段不能通过shell命令单独执行。

  

mvn install

  通过指定多个不同构建生命周期的阶段

比如执行mvn clean install,相对上述执行顺序,先执行清洁生命周期,然后再执行上述步骤。

mvn clean install

构建阶段有插件目标构成

我们已经知道项目的构建是通过一个个阶段而构建而成,那么每个阶段做什么工作?谁来做?这种事情就需要交给插件来做了。Maven对项目工程的所有操作都是由插件来完成的。一个插件可以支持多种功能,称之为目标。将插件的目标和生命周期的阶段绑定到一起,这样,当要执行某个阶段时,就调用插件来完成绑定的目标。

 

 

 一个插件目标代表一个特定的任务(比构建阶段更为精细),有助于项目的构建和管理。这些目标可能被绑定到多个阶段或者无绑定。不绑定在任何阶段的目标可以直接在生命周期之外通过调用执行。

例如,考虑下面的命令:

clean 和 pakage 是构建阶段,dependency:copy-dependencies 是目标

mvn clean dependency:copy-dependencies package

这里的 clean 阶段将会被首先执行,然后 dependency:copy-dependencies 目标会被执行,最终 package 阶段被执行。

为什么默认的pom文件没有配置各种目标插件,但是也能正常构建工程,原因是Maven自己默认指定了插件。

推荐阅读