4.Maven生命周期

一、什么是Maven生命周期

Maven的生命周期就是为了对所有的构件过程进行抽象和统一。Maven生命周期包括了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署、和站点生成等几乎所有构件步骤。

Maven的生命周期是抽象的,在Maven的设计中实际的任务都是交由插件来完成。这种设计与设计模式中的模板方法非常类似。父类只定义算法的整体结构,子类通过实现或重写父类的方法来控制实际的行为。

public abstract class AbstractBuild{
	public void bulid(){
		initialize();
		compile();
		test();
		packagee();
		integrationTest();
		deploy();
	}
	
	protected abstract initialize();
	
	protected abstract compile();
	
	protected abstract test();
	
	protected abstract packagee();
	
	protected abstract integrationTest();
	
	protected abstract deploy();
}

上面的代码可以简单的描述Maven的build过程,当然maven的build比这个段代码复杂的多。Maven定义了生命周期的过程,但Maven不负责实现它。那么谁来实现它?
为了不让用户编写复杂的构建脚本,Maven的实现是,每个构建步骤都由一个和多个插件来实现。Maven为大多数构建步骤编写并绑定了默认插件。
例如,针对编译有maven-compiler-plugin插件,针对测试maven-surefire-plugin插件等。

二、Maven三套生命周期

Maven拥有三套相互独立的生命周期,他们分别是clean、default、和site。

clean生命周期的目的是清理项目,它包含三个阶段
1)pre-clean执行一些清理前需要完成的工作。
2)clean清理上一次构建生成的文件。
3)post-clean执行一些清理后需要完成的工作。

default生命周期定义了真正构建时所需要执行的所有步骤,它是所有生命周期中最核心的部分。
1)validate
2)initialize
3)generate-sources
4)process-sources处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
5)generate-resources
6)process-resources
7)compile编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。
8)process-classes
9)process-test-sources处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
10)generate-test-resources
11)process-test-resources
12)test-compile编译目录的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
13)process-test-classes
14)test使用单元测试框架运行测试,测试代码不会被打包或部署。
15)prepare-package
16)package接受编译好的代码,打包成可发布的格式,如JAR。
17)pre-integration-test
18)integratino-test
19)post-integration-test
20)verify
21)install将包安装到Maven本地仓库,供本地其他Maven项目使用。
22)deploy将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。

site生命周期的目的是建立和发布项目站点
1)pre-site执行一些在生成项目站点之前需要完成的工作。
2)site生成项目站点文档。
3)post-site执行一些在生成项目站点之后需要完成的工作。
4)site-deploy见生成的项目站点发布到服务器上。

三、命令行与生命周期

$mvn clean 该命令调用clean生命周期的clean阶段,实际执行pre-clean和clean
$mvn test 该命令调用default生命周期的test阶段,世界执行default的从validate到test所有阶段。
$mvn clean install 该命令执行clean生命周期的clean阶段和default生命周期的install阶段。实际执行为clean中pre-clean、clean阶段。default生命周期的从validate到instanll所有阶段。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值