Maven是一个项目管理工具,它包含
- 一个项目对象模型(Project Object Model),
- 一组标准集合,
- 一个项目生命周期(Project Lifecycle),
- 一个依赖管理系统(Dependency Management System),
- 和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven关键字
- Project:任何你想build的事物,maven都会把它们当作是一个Project,这些Project被定义为POM(Project Object Model),一个Project可以依赖其他的project,一个project也可以有多个子project。
- POM:pom.xml是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似ant的build.xml文件。pom.xml文件应该位于每个Project的根目录。
- GroupId:这个应该是公司名或组织名。
- ArtifactId:一般来说,这个是project名。
- Packaging:项目打包的类型,可以是jar、war、rar、ear、pom,默认是jar。
- Version:项目的版本,项目的唯一标识是groupId+artifactId+packaging+version组成。
- Dependency:为了能够build或运行,一个典型的java project会依赖其他的包,在Maven中,这些被依赖的包被称为dependency。
- Plug-in:Maven是有插件组织的,它的每一个功能都是由插件提供的,主要的插件是由java来写的,但是他也支持beanshell和ant脚本编写的插件。
- Repository:仓库用来存放artifact的,可以是本地仓库,也可以是远程仓库。
- Snapshot:工程中可以(也应该)有这样一个特殊的版本,这引版本可以告诉Maven,该工程正处于开发阶段,会经常更常更新(但还未发布),当其他工程依赖此类型的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载,使用该最新版本。
Maven的标准目录结构
使用目录模板,可以使pom.xml更简洁。国为Maven2已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以resources目录为例:
- src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。
- src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。
Maven生命周期
- validate:验证工程是否正确,所有需要资源是否可用。
- compile,编译项目的源代码。
- test-compile:编译项目测试代码。
- test:使用已编译的测试代码,测试已编译的源代码。
- package:已发布的格式,如jar,将已编译的源代码打包。
- integration-test:在集成测试可以运行的环境中处理和发布包。
- verify:运行任何检查,验证包是否有效且达到质量标准。
- install:把包安装在本地的repository中,可以被其他工程作为依赖来使用。
- deploy:在整合或者发布环境下执行,将最终版本的包copy到远程的repository,使得其他的开发者或者工程可以共享。
- generate-sources:产生应用需要的任何额外的源代码,如xdoclet。
如果执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系的,如test依赖test-compile。
最后欢迎大家访问我的个人网站:1024s