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自己默认指定了插件。