Maven概述
Maven是一个项目管理和整合的工具,Maven为开发者提供了一套构建生命周期框架。Maven主要帮助开发者完成以下工作:构建、文档生成、报告、依赖、SCMS、发布、分发、邮件列表。
Maven工程源码文件、资源文件的默认配置
配置项 | 默认值 |
---|---|
source code | ${basedir}/src/main/java |
resources | ${basedir}/src/main/resources |
Tests | ${basedir}/src/test |
Complied byte code | ${basedir}/target |
${basedir}/target | ${basedir}/target/classes |
POM
pom(program object model)代表工程对象模型,它是使用Maven工作时的基本组件,是一个xml文件,被放在工程的根目录下:pom.xml,包含了关于工程和各种配置细节的信息,Maven使用这些信息构建工程;也包含了目标和插件。
每个工程只有一个pom文件:
- 所有的POM文件需要project元素和三个必须的字段:groupId、artifactId、version
- 在仓库中的工程标识为:groupId:artifactId:version
- pom.xml的根元素是project
Maven– 构建生命周期
构建生命周期是一组阶段的序列,每个阶段定义了目标被执行的顺序。这里的阶段是生命周期的一部分。
一个典型的Maven构建生命周期是由以下阶段的序列组成的:
阶段 | 处理 | 描述 |
---|---|---|
prepare-resources | 资源拷贝 | 可以自定义需要拷贝的资源 |
compile | 编译 | 完成源代码编译 |
package | 打包 | 根据pom.xml中描述的打包配置创建jar/war包 |
install | 安装 | 在本地/远程仓库中安装工程包 |
Maven有三个典型的生命周期:
- clean:在进行真正的构建之前进行一些清理工作。
名称 | 描述 |
---|---|
pre-clean | 执行一些需要在clean之前完成的工作 |
clean | 移除所有上一次构建生成的文件 |
post-clean | 执行一些需要在clean之后立刻完成的工作 |
- default(or build):这是 Maven 的主要生命周期,被用于构建应用.
名称 | 描述 |
---|---|
validate | 检查工程配置是否正确,完成构建过程的所有必要信息是否能够获取到 |
initialize | 初始化构建状态,例如设置属性 |
generate-sources | 生成编译阶段需要包含的任何源码文件 |
process-sources | 处理源代码,例如,过滤任何值(filter any value) |
generate-resources | 生成工程包中需要包含的资源文件 |
process-resources | 拷贝和处理资源文件到目的目录中,为打包阶段做准备 |
compile | 编译工程源码 |
process-classes | 处理编译生成的文件,例如 Java Class 字节码的加强和优化 |
generate-test-sources | 生成编译阶段需要包含的任何测试源代码 |
process-test-sources | 处理测试源代码,例如,过滤任何值(filter any values) |
test-compile | 编译测试源代码到测试目的目录 |
process-test-classes | 处理测试代码文件编译后生成的文件 |
test | 使用适当的单元测试框架(例如JUnit)运行测试 |
prepare-package | 在真正打包之前,为准备打包执行任何必要的操作 |
package | 获取编译后的代码,并按照可发布的格式进行打包,例如 JAR、WAR 或者 EAR 文件 |
pre-integration-test | 在集成测试执行之前,执行所需的操作。例如,设置所需的环境变量 |
integration-test | 处理和部署必须的工程包到集成测试能够运行的环境中 |
post-integration-test | 在集成测试被执行后执行必要的操作。例如,清理环境 |
verify | 运行检查操作来验证工程包是有效的,并满足质量要求 |
install | 安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖 |
deploy | 拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
- site:Maven Site 插件一般用来创建新的报告文档、部署站点等。
名称 | 描述 |
---|---|
pre-site | 执行一些需要在生成站点文档之前完成的工作 |
site | 生成项目的站点文档 |
post-site | 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 |
site-deploy | 将生成的站点文档部署到特定的服务器上 |
构建配置文件
构建配置文件是一组配置的集合,用来设置或者覆盖Maven构建的默认配置。Profile 在 pom.xml 中使用 activeProfiles / profiles 元素指定,并且可以用很多方式触发。Profile 在构建时修改 POM,并且为变量设置不同的目标环境(例如,在开发、测试和产品环境中的数据库服务器路径)。
Profile 类型
类型 | 定义位置 |
---|---|
Per Project | 定义在工程 POM 文件 pom.xml 中 |
Per User | 定义在 Maven 设置 xml 文件中 (%USER_HOME%/.m2/settings.xml) |
Global | 定义在 Maven 全局配置 xml 文件中 (%M2_HOME%/conf/settings.xml) |
Maven仓库
Maven仓库是一个位置,可以存储所有的工程jar文件、library jar文件、插件或任何其他的工程指定的文件。
Maven有三种类型:本地(local)、中央(central)、远程(remote)
Maven插件
Maven实际上是一个依赖于插件执行的框架,每个任务实际上是有插件完成的,Maven插件通常被用来:
- 创建jar文件
- 创建war文件
- 编译代码文件
- 代码单元测试
- 创建工程文档
- 创建工程报告
Maven插件类型:
类型 | 描述 |
---|---|
Build plugins | 在构建时执行,并在 pom.xml 的 元素中配置 |
Reporting plugins | 在网站生成过程中执行,并在 pom.xml 的 元素中配置 |
Maven常用的插件列表
插件 | 描述 |
---|---|
clean | 构建之后清理目标文件;删除目标目录 |
compiler | 编译java源文件 |
surefile | 运行Junit单元测试,创建测试报告 |
jar | 从当前工程中创建jar文件 |
war | 从当前工程中创建war文件 |
javadoc | 为工程生成javadoc |
antrun | 从创建过程的任意一个阶段中运行一个ant任务的集合 |
创建工程