1 关键名词Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。
一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。
POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。
GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,
将一个工程从其它有类似名称的工程里区别出来。
Artifact:artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。
每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,
否则Maven无法找到(识别)它们。
Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。
在Maven中,这些被依赖的包就被称为dependency.dependency一般是其它工程的artifact. Plug-in:Maven是由插件组织的,
它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。
主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。
Repository:仓库用于存放artifact,它可以是本地仓库,也可以是远程仓库。Maven有一个默认的远程仓库——central,
可以从http://www.ibiblio.org/maven/下载其中的artifact.在Windows平台上,本地仓库的默认地址是User_Home/.m2/repository.
Snapshot:工程中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该工程正处于开发阶段,
会经常更新(但还未发布)。当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版。
2 Maven Build Life Cycle软件项目一般都有相似的开发过程:准备,编译,测试,打包和部署,Maven将上述过程称为Build Life Cycle.
在Maven中,这些生命周期由一系列的短语组成,每个短语对应着一个(或多个)操作;或对应着一个(或多个)goal(类似于Ant中的 target)。
如编译源文件的命令mvn compile中的compile是一个生命周期短语。同时该命令也可以等价于mvn compiler:compile,其中的compiler是一个插件,
它提供了compile(此compile与mvn compile中的compile意义不同)goal;compiler还可提供另一个goal——testCompile,
该goal用于编译 junit测试类。
在执行某一个生命周期时,Maven会首先执行该生命周期之前的其它周期。
如要执行compile,那么将首先执行validate,generate- source,process-source和generate-resources,
最后再执行compile本身。关于Maven中默认的生命周期短语,请见参考资源[6]中的附录B.3.