maven相关
maven生命周期
如果没有maven,开发人员每次开发代码需要手工进行代码清理,构建,测试,部署等步骤,这些重复劳动耗费开发人员大量时间。apache将项目的开发过程各个阶段抽象成生命周期,各个阶段的任务/动作实际上是由maven插件执行的。
实际上,maven插件是与目标(goal)绑定的,maven插件执行的是一个个目标。
目标表示一个特定的、对构建和管理工程有帮助的任务。它可能绑定了 0 个或多个构建阶段。没有绑定任何构建阶段的目标可以在构建生命周期之外被直接调用执行。
clean
其中clean阶段包含:
生命周期-抽象概念 | 阶段动作 | 目标-与插件绑定 | |
---|---|---|---|
0 | pre-clean | 初始化构建状态,例如设置属性。 | |
1 | clean | 清理target下的文件 | clean:clean |
2 | post-clean | 清理后一些动作。 |
你可以在命令行中输入mvn help:describe -Dplugin=
xxx 来查看各个插件绑定的goal
如查看maven-plugin-clean的: mvn help:describe -Dplugin=clean
标准的maven生命周期分别为clean(处理项目的清理)、default(处理项目的部署)、site(处理项目的文档生成)。
default
default阶段包含
由于不同的打包方式,阶段绑定的目标是不同的,下面以打包成ejb/ ejb3/ jar/ par/ rar/war为例
生命周期-抽象概念 | 阶段动作 | 目标-与插件绑定 | |
---|---|---|---|
1 | validate | 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到 | |
2 | initialize | 初始化构建状态,例如设置属性。 | |
3 | generate-sources | 生成编译阶段需要包含的任何源码文件。 | |
4 | process-sources | 处理源代码,例如,过滤任何值(filter any value)。 | |
5 | generate-resources | 生成工程包中需要包含的资源文件。 | |
6 | process-resources | 拷贝和处理资源文件到目的目录中,为打包阶段做准备。 | resources:resources |
7 | compile | 编译工程源码。 | compiler:compile |
8 | process-classes | 处理编译生成的文件,例如 Java Class 字节码的加强和优化。 | |
9 | generate-test-sources | 生成编译阶段需要包含的任何测试源代码。 | |
10 | process-test-sources | 处理测试源代码,例如,过滤任何值(filter any values)。 | resources:testResources |
11 | test-compile | 编译测试源代码到测试目的目录。 | compiler:testCompile |
12 | process-test-classes | 处理测试代码文件编译后生成的文件。 | |
13 | test | 使用适当的单元测试框架(例如JUnit)运行测试。 | surefire:test |
14 | prepare-package | 在真正打包之前,为准备打包执行任何必要的操作。 | |
15 | package | 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文j件。 | ejb:ejb 或 ejb3:ejb3 或 jar:jar 或 par:par 或 rar:rar 或 war:war |
16 | pre-integration-test | 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量。 | |
17 | integration-test | 处理和部署必须的工程包到集成测试能够运行的环境中。 | |
18 | post-integration-test | 在集成测试被执行后执行必要的操作。例如,清理环境。 | |
19 | verify | 运行检查操作来验证工程包是有效的,并满足质量要求。 | |
20 | install | 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。 | install:install |
21 | deploy | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程。 | deploy:deploy |
site
生命周期-抽象概念 | 阶段动作 | 目标-与插件绑定 | |
---|---|---|---|
1 | pre-site | 在实际项目站点生成之前执行所需的过程 | pre-site |
2 | site | 生成项目的站点文档 | site:site |
3 | post-site | 执行完成站点生成所需的流程,并准备站点部署 | |
4 | site-deploy | 将生成的站点文档部署到指定的Web服务器 | site:deploy |
运行方式
运行阶段
mvn clean
最为常用的命令方式,运行clean 生命周期的pre-clean, clean阶段,实际执行的是maven-clean-plugin插件的clean目标。
mvn compile
compile阶段属于default lifecycle,会运行default从validate至complie的所有阶段,即default周期的第1-7阶段, 执行的是dependency插件的copy-dependencies目标
运行目标
mvn dependency:copy-dependencies
以上命令执行了dependency插件的copy-dependencies目标。
同时运行
mvn clean dependency:copy-dependencies package
以上命令执行了clean周期的pre-clean和clean阶段,dependency插件的copy-dependencies目标,default周期package阶段及package之前的所有阶段。