对一个项目进行打包时,maven分别执行了 validate->compile->test->package,这个过程就是生命周期(lifecycle)。在生命周期的过程中会有很多的阶段(phase),这些阶段按照既定的顺序执行来完成一个项目的构建。
在生命周期中,各个阶段的工作由插件(plugin)来完成,一个插件通常可以完成一个或者多个阶段的工作。每个阶段的工作对应插件中的一个目标(goal)。不同的插件结合起来,就完成了整个项目的构建。
生命周期-lifecyclemaven的生命周期可以分为三大类:
- Clean Lifecycle:在进行真正的构建之前进行一些清理工作Default Lifecycle:构建的核心部分,编译,测试,打包,部署等等Site Lifecycle:生成项目报告,站点,发布站点
生命周期Clean Lifecycle包含的阶段(phase):
pre-clean:执行一些需要在clean之前完成的工作clean:移除所有上一次构建生成的文件post-clean:执行一些需要在clean之后立刻完成的工作 Default Lifecycle
生命周期Default Lifecycle包含的阶段(phase):
validate:验证工程是否正确,所需的信息是否完整initialize:初始化构建平台,例如:设置properties或创建目录generate-sourcesprocess-sourcesgenerate-resourcesprocess-resources:复制并处理资源文件,至目标目录,准备打包compile:编译源代码process-classes:源码编译后的后期处理,比如java字节码的增强(优化?)generate-test-sourcesprocess-test-sourcesgenerate-test-resourcesprocess-test-resourcestest-compile:编译测试源代码(默认是test目录下)process-test-classtest:执行单元测试prepare-packagepackage:将工程文件打包为指定的格式,例如JAR,WAR等pre-integration-testintegration-test:集成测试post-integration-testverify:检查package是否有效、符合标准install:将包安装至本地仓库,以让其它项目依赖。deploy:将最终的包复制到远程的仓库,以让其它开发人员与项目共享。 Site Lifecycle
生命周期Site Lifecycle包含的阶段(phase):
pre-site:执行一些需要在生成站点文档之前完成的工作site:生成项目的站点文档post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备site-deploy:将生成的站点文档部署到特定的服务器上
注:执行一个phase将会执行这个lifecycle前面的所有phase。
goal执行phase实际执行的是goal。如果一个phase没有绑定goal,那这个phase就不会被执行。一些phase默认已经绑定了一些goal。例如:阶段compile绑定的goal是compiler:compile、阶段package绑定的goal是jar:jar。
所以,phase其实就是goal的容器,实际被执行的都是goal。phase被执行时,实际执行的都是被绑定到该phase的goal。
例子:
mvn clean dependency:copy-dependencies package
clean是phase。
dependency:copy-dependencies是plugin-in dependency 的goal copy-dependencies。
package也是一个phase。
maven会顺序执行这3个对象中包含的所有goal。
我们可以通过在project中使用plugin,将各种各样的goal加入到Maven的phase中,从而根据自己的实际需求,灵活实现各种定制功能。
如何将display-maven-plugin中的goal time绑定到process-test-resources这个phase中
... com.mycompany.example display-maven-plugin1.0 process-test-resources time
在编译时执行HelloWord类的man方法
... org.codehaus.mojo exec-maven-plugin1.2.1 compile java x.x.x.HelloWord
如果想知道插件中包含哪些goal:
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-eclipse-plugin:2.10
输出:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)