Maven 技术简录
阶段 |
处理 |
描述 |
验证 validate |
验证项目 |
验证项目是否正确且所有必须信息是可用的 |
编译 compile |
执行编译 |
源代码编译在此阶段完成 |
测试 Test |
测试 |
使用适当的单元测试框架(例如JUnit)运行测试。 |
包装 package |
打包 |
创建JAR/WAR包如在 pom.xml 中定义提及的包 |
检查 verify |
检查 |
对集成测试的结果进行检查,以保证质量达标 |
安装 install |
安装 |
安装打包的项目到本地仓库,以供其他项目使用 |
部署 deploy |
部署 |
拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程 |
为了完成 default 生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)将被按顺序地执行。
Maven 有以下三个标准的生命周期:
clean:项目清理的处理
default(或 build):项目部署的处理
site:项目站点文档创建的处理
clean 和 pakage 是构建阶段,dependency:copy-dependencies 是目标
mvn clean dependency:copy-dependencies package
执行 mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:
pre-clean:执行一些需要在clean之前完成的工作
clean:移除所有上一次构建生成的文件
post-clean:执行一些需要在clean之后立刻完成的工作
执行 mvn clean 将运行以下两个生命周期阶段:pre-clean, clean
运行 mvn post-clean ,则运行以下三个生命周期阶段: pre-clean, clean, post-clean
Default (Build) 生命周期
生命周期阶段 |
描述 |
validate(校验) |
校验项目是否正确并且所有必要的信息可以完成项目的构建过程。 |
initialize(初始化) |
初始化构建状态,比如设置属性值。 |
generate-sources(生成源代码) |
生成包含在编译阶段中的任何源代码。 |
process-sources(处理源代码) |
处理源代码,比如说,过滤任意值。 |
generate-resources(生成资源文件) |
生成将会包含在项目包中的资源文件。 |
process-resources (处理资源文件) |
复制和处理资源到目标目录,为打包阶段最好准备。 |
compile(编译) |
编译项目的源代码。 |
process-classes(处理类文件) |
处理编译生成的文件,比如说对Java class文件做字节码改善优化。 |
generate-test-sources(生成测试源代码) |
生成包含在编译阶段中的任何测试源代码。 |
process-test-sources(处理测试源代码) |
处理测试源代码,比如说,过滤任意值。 |
generate-test-resources(生成测试资源文件) |
为测试创建资源文件。 |
process-test-resources(处理测试资源文件) |
复制和处理测试资源到目标目录。 |
test-compile(编译测试源码) |
编译测试源代码到测试目标目录. |
process-test-classes(处理测试类文件) |
处理测试源码编译生成的文件。 |
test(测试) |
使用合适的单元测试框架运行测试(Juint是其中之一)。 |
prepare-package(准备打包) |
在实际打包之前,执行任何的必要的操作为打包做准备。 |
package(打包) |
将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。 |
pre-integration-test(集成测试前) |
在执行集成测试前进行必要的动作。比如说,搭建需要的环境。 |
integration-test(集成测试) |
处理和部署项目到可以运行集成测试环境中。 |
post-integration-test(集成测试后) |
在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。 |
verify (验证) |
运行任意的检查来验证项目包有效且达到质量标准。 |
install(安装) |
安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。 |
deploy(部署) |
将最终的项目包复制到远程仓库中与其他开发者和项目共享。 |
命令行调用:
mvn install 构建、安装工程到本地仓库
mvn clean deploy 构建和部署项目到共享仓库中
Site 生命周期
Maven Site 插件一般用来创建新的报告文档、部署站点等。
pre-site:执行一些需要在生成站点文档之前完成的工作
site:生成项目的站点文档
post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy:将生成的站点文档部署到特定的服务器上
Maven 插件通常被用来:
创建 jar 文件
创建 war 文件
编译代码文件
代码单元测试
创建工程文档
创建工程报告
插件 |
描述 |
clean |
构建之后清理目标文件。删除目标目录。 |
compiler |
编译 Java 源文件。 |
surefile |
运行 JUnit 单元测试。创建测试报告。 |
jar |
从当前工程中构建 JAR 文件。 |
war |
从当前工程中构建 WAR 文件。 |
javadoc |
为工程生成 Javadoc。 |
antrun |
从构建过程的任意一个阶段中运行一个 ant 任务的集合。 |
archetype 也就是原型,是一个 Maven 插件,准确说是一个项目模板,它的任务是根据模板创建一个项目结构。
mvn clean package -U maven 命令中使用 -U 参数强制 maven 现在最新的快照构建。
元素节点 |
描述 |
SCM |
配置 SVN 的路径,Maven 将从该路径下将代码取下来。 |
repository |
构建的 WAR 或 EAR 或JAR 文件的位置,或者其他源码构建成功后生成的构件的存储位置。 |
Plugin |
配置 maven-release-plugin 插件来实现自动部署过程。 |
mvn release:clean 清理工作空间,保证最新的发布进程成功进行。
mvn release:rollback 在上次发布过程不成功的情况下,回滚修改的工作空间代码和配置保证发布过程成功进行。
mvn release:prepare 执行多种操作:1.检查本地是否存在还未提交的修改 2.确保没有快照的依赖 3.改变应用程序的版本信息用以发布 4.更新POM文件到SVN 5.运行测试用例
6. 提交修改后的 POM 文件 7.为代码在 SVN 上做标记 8.增加版本号和附加快照以备将来发布 9.提交修改后POM文件到SVN
mvn release:perform 将代码切换到之前做标记的地方,运行 Maven 部署目标来部署 WAR 文件或者构建相应的结构到仓库里。