首页 > 代码库 > Maven

Maven

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\repository。
  • 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