一、依赖生命周期
scope:依赖的生命周期—用来控制项目编译时需要使用哪套classpath,比如测试时会将junit.jar加入编译环境,但是发布产品时又不会将junit.jar加入到编译环境
二、构建的生命周期
Maven有用三套相互独立的生命周期,他们分别是clean、default、site。
clean生命周期的目的是清理项目
default生命周期的目的是构建项目
site生命周期的目的是建立项目站点
每个生命周期都包含一些阶段(phase),这些阶段是有序执行的,并且后面的阶段依赖于前面的阶段,用户和maven最直接的交互方式就是调用这些生命周期阶段。
-------------------------------------------------------------------------------------------------
clean生命周期
clean生命周期包含三个阶段:
1)pre-clean:执行一些清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行一些清理后需要完成的工作
我们一般使用clean命令即可
default生命周期
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文件至项目输出的主class目录中
8)process-classes
9)generate-test-sources
10)process-test-sources 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,赋值到项目输出的测试classpath目录中。
11)generate-test-resources
12)process-test-resources
13)test-compile编译项目的测试代码。一般来说,是编译src/test/java目录下的java文件至项目输出的测试classpath目录中
14)process-test-classes
15)test使用单元测试框架运行项目,测试代码不会被打包或者部署
16)prepare-package
17)package接受编译好的代码,打包成可发布的格式,如JAR
18)pre_integration-test
19)integration-test
20)post-integration-test
21)verify
22)Install 将包安装到maven本地仓库,供本地其它maven项目使用
23)deploy将最终的包复制到远处仓库,供其它开发人员和maven项目使用
注:未说明的大家可以参考官网的解释
我们一般使用的几个命令:compile、test、package、install、deploy
site生命周期
site生命周期的目的是建立和发布项目站点,maven能够基于pom所包含的信息,自动生成一个侯浩的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
1)pre-site执行一些在生成项目站点之前需要完成的工作
2)site生成项目站点文档
3)post-site执行一些在生成项目站点后需要完成的工作
4)site-deploy将生成的项目站点发布到服务器上
命令行与生命周期
从命令行执行maven任务的最主要方式就是调用maven的生命周期阶段。需要注意的是,各个生命周期是相互独立的,而一个生命周期的二阶段是有前后依赖关系的,也就是说后一个生命的执行,那么前面的生命周期必须也要执行。
1)clean:该命令调用clean生命周期的clean阶段。实际执行的生命周期是pre-clean和clean阶段
2)test:该命令调用default生命周期的test阶段。实际执行的阶段为validate、initialize等,知道test的所有阶段。这也解释了为什么在测试的时候,项目的代码能够自动的得以编译。
3)clean install:该命令调用clean生命周期的clean阶段和default生命周期的install阶段。实际执行的阶段为clean生命周期的pre-clean、clean阶段,以及default生命周期的从validate至install的所有阶段。该命令结合了两个生命周期,在执行真正的项目构建之前清理项目时一个很好的建议。
4)clean deploy site-deploy:该命令调用clean生命周期的clean阶段、default生命周期的deploy阶段,已经site生命周期的site-deploy阶段