1 Maven是什么?
Maven是一个采用纯Java编写的开源项目管理工具。
Maven以项目为中心,采用了项目对象模(Project Object Model,POM),所有的项目配置信息都被定义在一个叫做pom.xml的配置文件中。通过该文件,Maven可以管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。
2 关键名词
- Project:任何您想build的事物,Maven都可以认为它们是项目。一个项目可以由多个子项目构成,也可以依赖其它的项目。
- POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个项目的根目录中。
- GroupId:groupId是组名,一般是公司域名的变体,标识了一个组(如公司)。
- ArtifactId:artifactId是项目名,和groupId一起,组成一个项目的唯一标识符。
- Dependency:一个典型的Java项目会依赖其它的包,这个时候就需要在pom.xml里添加对这个包的依赖,maven会自动下载配置好的jar包。
- Plug-in:Maven是一个很紧凑的内核,围绕着它的是许许多多的插件,Maven所有的功能都是由插件来提供的。 我们可以在pom.xml里配置插件,以使用特定的功能。
- Repository:仓库用于存放项目的依赖包,它可以是本地仓库,也可以是远程仓库。Maven有一个默认的远程仓库--central,可以从http://www.ibiblio.org/maven2/下载其中的依赖包。本地仓库的默认地址是${user_home}.m2 epository。
- Snapshot:项目中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该项目正处于开发阶段,会经常更新(但还未发布)。当其它项目依赖此项目时,Maven会在仓库中寻找该项目的最新版本,并自动下载、使用最新版。
3 设计思想
约定优于配置。其意义是,系统、库和框架应该假定合理的默认值,而无需不必要的配置,只有不符约定的部分才需要配置。
Maven约定的目录如下:
- / 项目目录
- pom.xml 用于maven的配置文件
- /src 源代码目录
- /src/main/java 工程java源代码目
- /src/main/resource 工程的资源目录
- /src/test/java 单元测试目录
- /target 输出目录,所有的输出物都存放在这个目录下
- /target/classes 编译之后的class文件
4 生命周期
default生命周期有下列跟随的阶段:
- validate:验证项目是正确的,所有必要的信息是可用的。
- compile:编译项目的源代码。
- test:用匹配的单元测试框架测试编译后的源代码。这些测试不应该要求代码被打包或者部署。
- package:取编译后的代码,并打包它到可分配的格式。
- integrationtest:处理和部署包到环境(不过有必要),执行集成测试。
- verify:运行检查以证实生成的包是有效的,达到质量标准的。
- install:安装这个包到本地仓库。
- deploy:在一个集成或者发布环境中做,拷贝最终的包到远端仓库分享。
mvn install命令将从validate开始一直执行到install阶段。
mvn clean install表示先执行mvn clean操作,再执行mvn install。
mvn clean dependency:copy-dependencies package则是在mvn clean后,mvn install之前,指定了插件。
5 创建项目
mvn archetype:create -DgroupId=com.umeng -DartifactId=portal