1.清理生命周期 (clean)
第一个你将感兴趣的生命周期是Maven中最简单的生命周期。运行mvn clean将调用清理生命周期,它包含了三个生命周期阶段:
• pre-clean
• clean
• post-clean
2.默认生命周期 (default)
生命周期阶段 | 描述 |
---|---|
validate | 验证项目是否正确,以及所有为了完整构建必要的信息是否可用 |
generate-sources | 生成所有需要包含在编译过程中的源代码 |
process-sources | 处理源代码,比如过滤一些值 |
generate-resources | 生成所有需要包含在打包过程中的资源文件 |
process-resources | 复制并处理资源文件至目标目录,准备打包 |
compile | 编译项目的源代码 |
process-classes | 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement) |
generate-test-sources | 生成所有包含在测试编译过程中的测试源码 |
process-test-sources | 处理测试源码,比如过滤一些值 |
generate-test-resources | 生成测试需要的资源文件 |
process-test-resources | 复制并处理测试资源文件至测试目标目录 |
test-compile | 编译测试源码至测试目标目录 |
test | 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布 |
prepare-package | 在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现) |
package | 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR |
pre-integration-test | 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境 |
integration-test | 如果有必要的话,处理包并发布至集成测试可以运行的环境 |
post-integration-test | 执行一些在集成测试运行之后需要的动作。如清理集成测试环境。 |
verify | 执行所有检查,验证包是有效的,符合质量规范 |
install | 安装包至本地仓库,以备本地的其它项目作为依赖使用 |
deploy | 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关) |
3.站点生命周期 (site)
Maven不仅仅能从一个项目构建软件构件,它还能为一个或者一组项目生成项目文档和报告。项目文档和站点生成有一个专有的生命周期,它包含了四个阶段:
1. pre-site
2. site
3. post-site
4. site-deploy
默认绑定到站点生命周期的目标是:
1. site - site:site
2. site-deploy -site:deploy
运行如下命令从一个Maven项目生成一个站点:
4.打包相关生命周期
4.1 JAR
JAR是默认的打包类型,是最常用的,因此也就是生命周期配置中最经常遇到的打包类型。JAR生命周期默认的目标如下表 所示:
生命周期阶段 | 目标 |
process-resources | resources:resources |
compile | compiler:compile |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test |
package | jar:jar |
install | install:install |
deploy | deploy:deploy |
4.2pom
POM是最简单的打包类型。不像一个JAR,SAR,或者EAR,它生成的构件只是它本身。没有代码需要测试或者编译,也没有资源需要处理。打包类型为POM的项目的默认目标如表 10.3 “POM打包默认的目标”所示:
生命周期阶段 | 目标 |
package | site:attach-descriptor |
install | install:install |
deploy | deploy:deploy |
4.3WAR
WAR打包类型和JAR以及EJB类似。例外是这里的package目标是war:war。注意war:war插件需要一个web.xml配置文件在项目的src/main/webapp/WEB-INF目录中。打包类型为WAR的项目的默认目标如表 “WAR打包默认的目标”所示。
WAR打包默认的目标
生命周期阶段 | 目标 |
---|---|
process-resources | resources:resources 处理资源并将资源复制到输出目录 |
compile | compiler:compile 编译所有的源码并复制到构建输出目录 |
process-test-resources | resources:testResources |
test-compile | compiler:testCompile |
test | surefire:test 寻找测试源码目录下所有以*Test结尾的类,以JUnit2测试的形式运行它们 |
package | war:war |
install | install:install 将项目的主要构件安装到本地仓库 |
deploy | deploy:deploy 用来将一个构件部署到远程Maven仓库,当你执行一次发布的时候通常需要更新远程仓 |
4.4 EAR
EAR可能是最简单的Java EE结构体,它主要包含一个部署描述符application.xml文件,一些资源和一些模块。EAR插件有个名为generate-application-xml的目标,它根据
EAR项目POM的配置生成application.xml。打包类型为EAR的项目的默认目标如表 “EAR打包默认的目标”所示。
EAR打包默认的目标
生命周期阶段 | 目标 |
---|---|
generate-resources | ear:generate-application-xml |
process-resources | resources:resources |
package | ear:ear |
install | install:install |
deploy | deploy:deploy |
以上列出了常用的几个打包的生命周期。