7.4.1内置绑定

了为能让用户几乎不用任何配置就能构建Maven项目,Maven在核心为一些主要的生命周期阶段绑定了很多插件的目录,当用户通过命令行调用使命周期阶段的时候,对应插件目标就会执行相应的任务。

clean生命周期仅有pre-clean, clean和 post-clean三个阶段,其中的clean与maven-clean-plugin:clean绑定。maven-clean-plugin仅有clean这一个目标,其作用就是删除项目的输出目录。clean生命周期阶段与插件目标的绑定关系如表7-1所示。

site使命周期有pre-sie, site, post-site 和 site-deploy四个阶段,其中,site和maven-site-plugin:site相互绑定,site-deploy和 maven-site-plugin:deploy相互绑定。maven-site-plugin有很多目标,其中,site目标用来生成项目站点,deploy目标用来将项目站点部署到远程服务器上。site命令周期阶段与插件目标的绑定关系如表7-2所示。

相对于clean和site生命周期来说,default使命周期与插件目标的绑定关系就显得复杂一些。这是因为对于任何项目来说,例如jar项目和war项目,它们的项目清理和站点生成任务是一样的,不过构建过程上会有区别。例如jar项目需要打成JAR包,而war项目需要打成WAR包.

由于项目的打包类型会影响构建的具体过程,因此,default生命周期的阶段与插件目标的绑定关系由项目打包类型所决定,打包类型是通过POM中的packaging元素定义的,最常见,最最重的打包类型是jar,它也是默认的打包类型。基于该打包类型的项目,其default生命周期的内置插件绑定关系及具体任务如下

生命周期阶段 插件目标 执行任务
process-resources maven-resources-plugin:resources 复制主资源文件至主输出目录
compile maven-compiler-plugin:compile 编译主代码至主输出目录
process-test-resources maven-resources-plugin:testResources 复制测试资源文件至测试输出目录
test-compile maven-compiler-plugin:testCompile 编译测试代码至测试输出目录
test maven-surefire-plugin:test 执行测试用例
package maven-jar-plugin:jar 创建项目jar包
install maven-install-plugin:install 将项目输出构件安装到本地仓库
deploy maven-deploy-plugin:deploy 将项目输出构件部署到远程仓库

注意,上表只列出了拥有插件绑定关系的阶段,default生命周期还有很多其他阶段,默认它们没有绑定任何插件,因此也没有任何实际行为。 除了默认的打包类型jar之外,常见的打包类型还有war, pom, maven-plugin, ear等它们的default生命周期与插件目录的绑定关系可参阅Maven官方文档。

读者可以从Maven的命令行输出中看到在项目构建过程执行了哪些插件目标,例如在一个maven项目里执行mvn clean install命令,执行的插件目标依次为maven-clean-plugin:clean,maven-resources-plugin:resources, maven-compiler-plugin:compile, maven-resources-plugin:testResources, maven-compiler-plugin:testCompile, maven-surefire-plugin:test, maven-jar-plugin:jar和maven-install-plugin:install。我们知道,mvn clean install命令实际调用了clean生命周期的pre-clean, clean阶段,以及default生命周期的从validate至install所有阶段。

results matching ""

    No results matching ""