Maven是什么?
Maven是一个项目管理工具。它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven的作用
- 统一开发规范与工具
- 统一管理jar包
Maven的项目结构
src/main/java |
application library sources - java源代码文件 |
src/main/resources |
application library resources - 资源库,会自动复制到classes文件夹下 |
src/main/filters |
resources filter files - 资源过滤文件 |
src/main/assembly |
assembly descriptor - 组件的描述配置,如何打包 |
src/main/config |
configuration files - 配置文件 |
src/main/webapp |
web application sources - web应用的目录,WEB-INF,js,css等 |
src/main/bin |
脚本库 |
src/test/java |
单元测试java源代码文件 |
src/test/resources |
测试需要的资源库 |
src/test/filters |
测试资源过滤库 |
src/site |
一些文档 |
target/ |
存放项目构建后的文件和目录,jar包,war包,编译的class文件等;Maven构建时生成的 |
pom.xml |
工程描述文件 |
LICENSE.txt |
license |
README.txt |
read me |
Maven的生命周期
**clean(清理)
cleanup(清理所有)
此生命周期旨在给工程做清理工作,它主要包含以下阶段:
pre-clean - 执行项目清理前所需要的工作。
clean - 清理上一次build项目生成的文件。
post-clean - 执行完成项目清理所需的工作.
default(默认)
validate - 验证项目是否正确且所有必要的信息都可用。
initialize - 初始化构建工作,如:设置参数,创建目录等。
generate-sources - 为包含在编译范围内的代码生成源代码.
process-sources - 处理源代码, 如过滤值.
generate-resources -
process-resources - 复制并处理资源文件,至目标目录,准备打包。
**compile - 编译项目中的源代码.
process-classes - 为编译生成的文件做后期工作, 例如做Java类的字节码增强.
generate-test-sources - 为编译内容生成测试源代码.
process-test-sources - 处理测试源代码。
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 -将包安装到本地仓库,给其他本地引用提供依赖。
deploy -完成集成和发布工作,将最终包复制到远程仓库以便分享给其他开发人员。
site(站点)
pre-site - 执行一些生成项目站点前的准备工作。
site - 生成项目站点的文档。
post-site - 执行需完成站点生成的工作,如站点部署的准备工作。
*site-deploy - 向制定的web服务器部署站点生成文件