POM是项目对象模型(project object model)的简称,是
Maven(以项目为中心的设计)对一个单一项目的描述。没有POM的话,Maven是毫无用处的——POM是Maven的核心。是POM实现的并驱动了这种以模型来描述的构建方式。
下面的POM示例,是可能用于构建和测试一个项目的脚本。一个POM是一个
XML文档,看起来类似于如下的示例:
此POM脚本允许编译、测试以及生成基本的文档。你可能会问单凭这区区15行代码是如何做到的,实际上这是一个十分好且基本的问题。答案在于
Maven对于其Super POM(译者注:意即所有POM脚本的父脚本)的隐匿调用。
Maven的POM文档带有全部的Maven所鼓励的默认规则,这类似于
Java语言的
java.lang.Object对象。
在
Java里,所有对象都是java.lang.Object的
子对象,同样的,在Maven中,所有POM也都是一个Super POM的子脚本。这个Super POM乍一看可能让你觉得恐怖,要记住的最关键一点是,Super POM包含了重要信息,因此你不必在创建一个POM的时候重复这些信息。
modelVersion:此必需的元素说明了本POM所使用的模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,以当
Maven引入了新的特性或者其他模型变更的时候,确保稳定性。
artifactId:表示本项目的主要项目的唯一基本名。一个典型的由Maven生成的项目名称将会是如下的格式:
-.;,其他部分诸如源包也使用artifactId作为它们名称的一部分。packaging:表示本项目所使用的包类型(
JAR,WAR,EAR等)。这不仅仅意味着将使用JAR,、WAR、EAR打包,也表明在作为构建流程一部分的,一个特定的生命周期。此生命周期是一个主题处理,会在本章的稍后提到。只要记住此选定的项目包扮演的是定制构建生命周期的角色。本元素的默认值是jar,因此在大多数情况下,你不需要去特别指定。