一.maven
是什么?
maven
是一个Java
语言编写的开源项目管理工具,是Apache
软件基金会的顶级项目.主要用于项目构建
,依赖管理
,项目信息管理
,是现今最流行的项目构建工具.
二.maven
的生命周期
概述:
一个完整的项目构建过程通常包括清理
、编译
、测试
、打包
、集成测试
、验证
、部署
等步骤,Maven从中抽取了一套完善的、易扩展的生命周期。Maven的生命周期是抽象的,其中的具体任务都交由插件来完成。
Maven为大多数构建任务编写并绑定了默认的插件,如针对编译的插件:maven-compiler-plugin
。用户也可自行配置或编写插件。
- maven的3套生命周期
Maven定义了三套生命周期:
clean
、default
、site
,每个生命周期都包含了一些阶段(phase
)。三套生命周期相互独立,但各个生命周期中的phase
却是有顺序的,且后面的phase依赖于前面的phase。执行某个phase时,其前面的phase会依顺序执行,但不会触发另外两套生命周期中的任何phase
1.`clean`生命周期
`pre-clean` :执行清理前的工作;
`clean` :清理上一次构建生成的所有文件;
`post-clean` :执行清理后的工作
2.`default`生命周期
default生命周期是最核心的,它包含了构建项目时真正需要执行的所有步骤。
validate
initialize
generate-sources
process-sources
generate-resources
`process-resources` :复制和处理资源文件到target目录,准备打包;
`compile` :编译项目的源代码;
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
`test-compile` :编译测试源代码;
process-test-classes
`test` :运行测试代码;
prepare-package
`package` :打包成jar或者war或者其他格式的分发包;
pre-integration-test
integration-test
post-integration-test
verify
`install` :将打好的包安装到本地仓库,供其他项目使用;
`deploy` :将打好的包安装到远程仓库,供其他项目使用;
3.`site`生命周期
pre-site
site :生成项目的站点文档;
post-site
site-deploy :发布生成的站点文档
三.maven
的插件
Maven的核心文件很小,主要的任务都是由插件来完成.
一个插件通常可以完成多个任务,每一个任务就叫做插件的一个目标。
Maven的生命周期是抽象的,实际需要插件来完成任务,这一过程是通过将插件的目标(goal)绑定到生命周期的具体阶段(phase)来完成的。
maven的生命周期和插件是maven的核心工作原理.
四.maven
的常用命令
`mvn clean` : 执行maven的clean生命周期,包括里面的三个任务.完成清除项目的目标,执行后项目的target目录中的项目信息被清除,如果外层存在target目录的jar,war包,也会一并清除.
`mvn compile` : 执行maven的default生命周期,包括compile之前的validate等好几个任务,不包括clean生命周期,执行后项目的target目录中classes目录中会生成正式的.class文件,compile在test-compile之前执行,所以执行compile不会生成测试的.class文件.
`mvn clean compile` : 先执行clean生命周期,然后执行default生命周期的compile之前的任务.
`mvn clean test-compile` : 先执行clean生命周期,然后执行default生命周期的test-compile之前的任务.
`mvn clean package` : 先执行clean生命周期,然后执行default生命周期的package之前的任务,执行后项目目录会生成target目录,里面包含项目生成的jar包或者war包(maven打包的方法)
`mvn clean package -Dmaven.test.skip=true` : clean,打包,跳过测试
`mvn clean package -P test -Dmaven.test.skip=true` : clean,指定test文件打包,跳过测试(-P:指profile,test是pom文件中的profile标签的id名称,意思是指定test文件打包)
`mvn clean install` : 先执行clean生命周期,然后执行default生命周期的install之前的任务,执行后项目被打好的包会自动安装到本地仓库,可以被其他项目使用
(这个命令执行后,你会在几个地方找到jar包?)
本文参考博文地址: Maven的生命周期和插件