Maven生命周期与插件
Maven的生命周期是抽象的,往往跟我们输入的mvn命令有关,生命周期的实际实现是由插件去实现的。具体的构建步骤,大部分都跟插件绑定,比如编译这个步骤跟插件maven-compiler-plugin:compile 绑定。
Maven的三套生命周期
Maven的生命周期不是一个整体,其实它拥有三套完整而且相互独立的生命周期,分别是clean,default,site,clean生命周期的作用是清理项目,default生命周期的作用是构建项目,site生命周期的作用是建立项目站点。
如同安卓的Activity的生命周期一样,Maven的生命周期也会含有不同的阶段,阶段是有顺序的,并且后面的阶段依赖于前面的阶段。以clean生命周期来说,它有三个阶段,pre-clean,clean,post-clean,当执行clean的时候,意味着pre-clean以及clean阶段都会执行。但是三套生命周期是相互独立的,所以default的生命周期的某一个阶段执行,并不会影响到clean或者是site生命周期的任何一个阶段。
clean生命周期
clean生命周期包含三个阶段:
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
default生命周期
validate
generate-sources
process-sources
generate-resources
process-resources 处理项目主资源文件。一般来说,是对src/main/resources目录内的内容进行变量替换输出到项目的主classpath目录
compile 编译项目的主源码,一般来说就是src/main/java目录下的文件输出到主classpath目录
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 处理项目测试资源文件。一般来说,是对src/test/resources目录内的内容进行变量替换输出到项目的主classpath目录
test-compile 编译项目的测试代码,一般来说就是src/test/java目录下的文件输出到主classpath目录
process-test-classes
test 使用单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装到Maven本地仓库,供其他Maven项目使用
deploy 将最终的包复制到远程的仓库,以让其它开发人员与Maven项目共享。
更多的详细介绍请参考
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html