maven生命周期
Maven拥有三套相互独立的生命周期,它们分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点
每个生命周期下面有不同的阶段
clean生命周期
clean生命周期的目的是清理项目,它包含三个阶段:
- pre-clean执行一些清理前需要完成的工作。
- clean清理上一次构建生成的文件。
- post-clean执行一些清理后需要完成的工作。
default生命周期
- validate
- initialize
- generate-sources
- process-sources处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
- generate-resources
- process-resources
- compile编译项目的主源码。一般来说,是编译src/main/java目录下的Java文件至项目输出的主classpath目录中。
- process-classes
- generate-test-sources
- process-test-sources处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
- generate-test-resources
- process-test-resources
- test-compile编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
- process-test-classes
- test使用单元测试框架运行测试,测试代码不会被打包或部署。
- prepare-package
- package接受编译好的代码,打包成可发布的格式,如JAR。
- pre-integration-test
- integration-test
- post-integration-test
- verify
- install将包安装到Maven本地仓库,供本地其他Maven项目使用。
- deploy将最终的包复制到远程仓库,供其他开发人员和Maven项目使用。
site生命周期
site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点,方便团队交流和发布项目信息。该生命周期包含如下阶段:
- pre-site执行一些在生成项目站点之前需要完成的工作。
- site生成项目站点文档。
- post-site执行一些在生成项目站点之后需要完成的工作。
- site-deploy将生成的项目站点发布到服务器上。
插件与指令绑定
插件远程仓库
插件的远程仓库使用pluginRepositories和pluginRepository配置,
在POM中配置插件的时候,如果该插件是Maven的官方插件(即如果其groupId为org.apache.maven.plugins),就可以省略groupId配置
maven插件版本
Maven在超级POM中为所有核心插件设定了版本,超级POM是所有Maven项目的父POM,所有项目都继承这个超级POM的配置,因此,即使用户不加任何配置,Maven使用核心插件的时候,它们的版本就已经确定了
解析插件前缀
通过配置settings.xml让Maven检查其他groupId上的插件仓库元数据
1 | <settings> |
指令绑定
用户通过命令行调用生命周期阶段的时候,对应的插件目标就会执行相应的任务
自定义绑定
用户还能够自己选择将某个插件目标绑定到生命周期的某个阶段上
有很多插件的目标在编写时已经定义了默认绑定阶段
当多个插件目标绑定到同一个阶段的时候,这些插件声明的先后顺序决定了目标的执行顺序
1 | <build> |
1 | # 使用maven-help-plugin查看插件详细信息,了解插件目标的默认绑定阶段 |
参考
1.《Maven实战》