1.Maven-简介 2.Maven-安装和配置 3.Maven-POM文件说明 4.Maven-坐标 5.Maven-依赖详解 6.Maven-仓库 7.Maven-生命周期和插件 8.Maven-聚合 9.Maven-继承和反应堆 10.Maven-使用NEXUS创建私服 11.Mavne-配置从NEXUS下载构件和为项目配置独立仓库 12.Maven-使用Hudson进行持续集成及系统配置 13.Maven-创建Hudson任务 14.Maven-Hudson监视任务、用户管理、工作目录
7 Maven-生命周期和插件
7.1.1 Maven生命周期1)就是为了对所有的构件过程进行抽象和统一。这个生命周期包含了项目的清理、初始化、编译、测试、打包、集成测试、验 证、部署和站点生成等几乎所有构件步骤。
2)Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,实际的任务都交由插件来完成。
3)Maven的生命周期抽象了构建的各个步骤,定义了它们的次序,但没有提供具体实现。
7.1.2 Maven生命周期详解
Maven拥有三套相互独立的生命周期,它们分别为clean、default和site。
--clean的生命周期的目的是清理项目。
pre-clean 执行一些清理前需要完成的工作。
clean 清理上一次构建生成的文件
post-clean 执行一些清理后需要完成的工作。
--default生命周期的目的是构建项目。
它定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。
validate,initialize,
generate-sources,
process-sources,
generate-resources,
process-resources,
compile,
process-classes,
generate-test-sources,
process-test-sources,
generate-test-resources,
process-test-resources,
test-compile,
process-test-classes,
test,
prepare-package,
package,
pre-integration-test,
integration-test,
post-integration-test,
verify,
install,
deploy
--site生命周期的目的是建立项目站点。
pre-site 执行一些在生成项目站点之前需要完成的工作
site 生成项目站点文档
post-site 执行一些在生成项目站点之后需要完成的工作
site-deploy 将生成的项目站点发布到服务器上。
每个生命周期都包含一些阶段(phase),这些阶段是有顺序的,并且后面的阶段依赖于前面的阶段,用户和Maven最直接的交
互方式就是调用这些生命周期的阶段。
7.2 插件
7.2.1 插件目标
Maven的核心仅仅定义了抽象的生命周期,具体的任务时交由插件完成的,插件以独立的构件形势存在,因此,Maven核心的分发包只有不到3MB的大小,Maven会在需要的时候下载并使用插件。
7.2.2 插件绑定
Maven的生命周期与插件相互绑定,用以完成实际的构建任务。具体而言,是生命周期的阶段与插件的目标项目绑定,以完成某个具体的构建任务。
7.2.3 内置绑定
为了让用户几乎不用任务配置就能够构建Maven项目,Mavne在核心为一些主要的生命周期阶段绑定了很多插件的目标,当用户通过命令调用生命周期阶段的时候,对应的插件目标就会执行相应的任务。如下图:
相对于clean和site生命周期来说,default生命周期与插件目标绑定关系就显得负责一些。由于项目的打包类型会影响构建的具体过程,因此default生命周期阶段与插件目标绑定关系由打包类型所决定,打包类型是通过POM中的packaging元素定义的。如下图:
除了默认的打包类型jar外,常见的打包类型还有 war、pom、maven-piugin、ear等。他们的default生命周期与插件目标的绑定关系可参阅Maven官方文档。
7.2.4 自定义绑定
除了内置绑定以外,用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上,这样的自定义绑定方式能让Maven项目在构建过程中执行更多更丰富的任务。如下图:
上图中就绑定了一个mybatis相关的插件,它用于生成 model,dao,mapper等文件的。
备注:当插件目标被绑定到不同的生命周期阶段的时候,其执行顺序会由生命周期阶段的先后顺序决定。如果多个目标被绑定到同一个阶段,他们的执行顺序会按照插件声明的先后顺序执行。